¿Cómo identifico qué CPU usa una MacBook?

Me gustaría identificar qué CPU está usando este portátil, en términos de nombres de código como "Ivy Bridge" y "Haswell". El pequeño logo de Apple en la parte superior izquierda muestra alguna información, pero no esta.

Respuestas (10)

En primer lugar, no obtendrá el nombre de la microarquitectura del procesador (Broadwell, Sandy Lake, Ivy Bridge, etc.) porque no es un esquema de marca prominente para los procesadores Intel. En contraste con Apple, el departamento de marketing opta por comercializar activamente los nombres en clave de sus sistemas operativos (Mavericks, Yosemite, El Capitan). Es una convención de marketing, no técnica.

Para obtener una lista de todos los procesadores Intel y sus nombres en clave, arquitecturas y especificaciones, la Lista de microprocesadores Intel de Wikipedia tiene una buena página.

Entonces, para responder a esta pregunta, voy a proporcionar tres métodos para averiguar qué CPU tiene, los dos primeros, que deberían ser buenos para la mayoría de los usuarios, y un tercer método en el que puede determinar el número de microarquitectura para que pueda buscar en el sitio de soporte de Intel. Puede "saltar" a la sección que se aplica a usted.

  1. Acerca de esta Mac (información general de la CPU)
  2. System Profiler (información general de la CPU)
  3. Terminal (información detallada de la CPU)

Acerca de esta Mac

Al hacer clic en el símbolo de Apple en la parte superior de la pantalla, seleccione Acerca de esta Mac

ingrese la descripción de la imagen aquí

Aparecerá una pantalla que le brinda una descripción general de su sistema. Su procesador aparecerá aquí.

ingrese la descripción de la imagen aquí


Perfilador del sistema

Al hacer clic en el botón Informe del sistema... (flecha verde), obtendrá un perfil completo de su sistema. En la primera página, le dará información más detallada sobre su máquina, incluida la información del procesador.

ingrese la descripción de la imagen aquí

Terminal

Soy fanático de Terminal en general. Se puede acceder a casi todo lo que ve en la GUI en OS X de manera más rápida y precisa a través de la línea de comando, en mi humilde opinión.

Para obtener el modelo de CPU exacto , incluido el número de microarquitectura, en Terminal, ejecute el siguiente comando:

sysctl -n machdep.cpu.brand_string

Obtendrá el procesador exacto que está utilizando. Por ejemplo, en mi iMac, el comando anterior responde con:

Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz

A continuación, puede realizar una búsqueda de i7-3770 y obtener el nombre del código y las especificaciones.

Solo como referencia, puede usar el comando Terminal:

system_profiler SPHardwareDataType

y obtenga un resultado que se parece a la pantalla que publiqué en la segunda sección, System Profiler :

Hardware Overview:

  Model Name: iMac
  Model Identifier: iMac13,2
  Processor Name: Intel Core i7
  Processor Speed: 3.4 GHz
  Number of Processors: 1
  Total Number of Cores: 4
  L2 Cache (per Core): 256 KB
  L3 Cache: 8 MB
  Memory: 32 GB
  Boot ROM Version: IM131.010A.B09
  SMC Version (system): 2.11f14
  Serial Number (system): XXXXXXXXXXXXXXXXXXX
  Hardware UUID: XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX

(Crédito a dante12 abajo)

Entonces, si necesita su CPU o, más comúnmente, su Identificador de modelo , puede usar el mismo comando junto con grep .

system_profiler SPHardwareDataType | grep Identifier

Responde con

  Model Identifier: iMac13,2
De todas las opciones que proporciona, solo el método Terminal realmente le indicará la arquitectura solicitada en la pregunta, a menos que me falte algo.
@Bob A menos que me esté perdiendo algo, parece que no puedo detectar la arquitectura en ninguna de las opciones. (excepto que ark.intel.comes capaz de decirme eso después de mirar hacia arriba i7-3770)
@NumLock Oh, es de esperar que no tenga el nombre de la arquitectura (no creo que la CPU realmente informe como el nombre del código, por lo que el sistema operativo tendría que mantener una base de datos actualizada ...). El número de modelo es suficiente para identificar de manera fácil y única la arquitectura, así que, en mi opinión, eso cuenta. Pero las opciones que no son de terminal aquí ni siquiera proporcionan el número de modelo; tratar de adivinar qué CPU es (y su rendimiento, eficiencia, etc.) solo por el recuento de núcleos y la velocidad del reloj (¿es el reloj base o el impulso máximo del turbo?) es inexacto y, en general, es una mala idea.
La opción de terminal es lo único útil en esta respuesta. Si le pregunto a alguien en qué CPU están probando y me dicen "Core i7", todo lo que sabría es que era un Nehalem (2008) o más nuevo. Hay grandes diferencias entre Nehalem y Sandybridge, e importantes diferencias entre SnB, Haswell y Skylake. Debe eliminar las otras opciones para no alentar a las personas a dar respuestas inútiles cuando les preguntan qué microarquitectura tiene su CPU. El número de modelo es excelente, porque puede saber de un vistazo qué microarco es, o buscar en Google para obtener detalles completos.
@PeterCordes Actualicé mi respuesta con sus comentarios.
Todavía sugiere dos métodos inútiles que no le dicen el número de modelo, solo "i7", y los sugiere primero. No deja en claro que la forma de terminal es la única que le permite responder la pregunta del OP. Las cosas "Acerca de" y "Perfil del sistema" parecen ser solo una pérdida de tiempo. Peor aún, la flecha roja que apunta a "información del procesador" implica que "Core i7" es una respuesta válida a la pregunta "¿qué microarquitectura tengo?". Es una lástima que no haya una forma de GUI que dé una respuesta satisfactoria, pero no la hay.
Una vez que tenga el número de modelo, como i7-4blahblah, puede encontrarlo haciendo una búsqueda dentro de la página en los primeros caracteres en en.wikipedia.org/wiki/List_of_Intel_microprocessors . Un método crudo, pero funcionó para mí.
@Mars Prefiero Intel ARK .

Abra Terminal y escriba o copie y pegue los siguientes comandos

system_profiler SPHardwareDataType | grep Processor

o

system_profiler SPHardwareDataType

o

sysctl -n machdep.cpu.brand_string
sysctl -a | grep cpu

Además, encontré un buen script en Github (gracias a @rbanffy ):

open http://www.google.com/?q=$(sysctl -n machdep.cpu.brand_string 
                              | awk '{FS=" " ; print $2 "+" $3 "+" $4}')+site:ark.intel.com
Gracias, $ sysctl -a | grep \.features\: | fmt -w 48el comando me ayudó con la salida de indicadores de CPU.

La CPU tiene su propia cadena de número de modelo incorporada. El software puede ejecutar la CPUIDinstrucción con los parámetros correctos para copiar la cadena en registros. La cadena será algo así como " Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz". Puede obtenerlo desde la línea de comandos con

sysctl -n machdep.cpu.brand_string

En realidad, no conozco OS X. Estoy respondiendo esto como alguien que a menudo se siente frustrado por los números de referencia en las respuestas de SO que no mencionan el hardware. En Linux, algunas distribuciones envían lscpuy/o x86info, pero ninguna decodifica el número de modelo en un nombre en clave de Intel. Los números siguen un patrón, por lo que es bastante fácil de decodificar (ver más abajo).

Ninguna de las respuestas existentes ha mencionado ningún método GUI que proporcione el número de modelo. Todos los métodos de GUI solo le muestran "Core i7", que no es suficiente. Por favor, no le digas a la gente que tienes "un core i7", porque eso solo hace perder el tiempo a todos .

"i7" podría ser cualquier cosa, desde Nehalem hasta Skylake. Hay grandes diferencias entre Nehalem y Sandybridge, e importantes diferencias entre SnB, Haswell y Skylake.


Si alguien le pregunta en qué microarquitectura ejecutó su punto de referencia , la cadena de modelo de esa es una excelente respuesta que contiene más información que solo el nombre de la microarquitectura, así que simplemente cópielo y péguelo (por ejemplo, "i7-3770 CPU @ 3.40GHz").

La mayoría de las personas que te pregunten eso sabrán cómo decodificar los números de modelo, así que no sientas la necesidad de resumirlo o buscarlo por ellos. Prefiero que alguien copie/pegue el número de modelo exacto, ya que puedo buscarlo en Google para encontrar detalles como el tamaño del caché. ( http://ark.intel.com/ tiene una página para cada modelo, y esos por lo general ocupan un lugar destacado en los resultados de búsqueda de Google. Sin embargo, esos no usan los nombres en clave).

Hay modelos "Pentium" y "Celeron" de cada microarquitectura, pero tienen AVX deshabilitado, por lo que la gente solo los usa para máquinas de ultra presupuesto.

Las CPU "i7 extreme" son una excepción a esto. por ejemplo, i7-5960X sigue siendo Haswell, pero tiene 8 núcleos (16 hiperprocesos) con memoria de cuatro canales. IDK si Apple vende máquinas con tales CPU.

Wikipedia tiene excelentes tablas de números de modelo para cada microarquitectura. por ejemplo, puede buscar en google x5690 wikipedia para encontrar rápidamente que un Xeon X5690 es un procesador de arquitectura Westmere .


Para obtener más información sobre las diferencias entre las canalizaciones de varias microarquitecturas , consulte artículos como este de Ars Technica sobre Haswell . Incluso los artículos de Wikipedia no son malos.

Para obtener un punto de vista más técnico de la arquitectura de la CPU, consulte los excelentes artículos de Sandybridge y Haswell de David Kanter .

El PDF de microarquitectura de Agner Fog es excelente si está analizando / ajustando el lenguaje ensamblador (o la salida del compilador), por ejemplo, tratando de dar sentido a los contadores de rendimiento.

Los manuales de optimización de Intel y AMD también tienen algunos detalles de microarquitectura, pero no siempre explican sus sugerencias de optimización de ASM con un análisis de cómo funciona la microarquitectura. Por eso prefiero la guía de Agner Fog.

Consulte también la wiki de etiquetas Stackoverflow x86 , que he ampliado/mejorado mucho el año pasado.

También más información (ligeramente desactualizada) aquí . Probablemente pueda obtener los números de familia/modelo/escalón, sysctlpero no tengo una Mac para probar eso.

(Actualización: clang -march=nativees posible que la parte de esta respuesta ya no funcione, si alguna vez lo hizo. Es posible que deba instalar GCC específicamente, por ejemplo, desde brew. Tenga en cuenta que XCode instala un gccenlace simbólico para sonar, por lo que si no tiene GCC real instalado, el gcccomando en una Mac obtendrá Clang).


gcc o clang -march=nativepueden imprimir un nombre en clave para usted , porque los nombres de las opciones de ajuste coinciden con los nombres en clave uarch de Intel (p. ej -march=sandybridge.). Para AMD: -march=bdver2= Piledriver = Bulldozer versión 2.

clang -v -xc /dev/null -O3 -march=native -o- -E 2>&1 | grep -o 'target-cpu \w*'

En mi sistema Linux Core2 imprime: target-cpu core2. Supongo que hará algo similar en OS X.

gcc -v -xc /dev/null -O3 -march=native -o- -E 2>&1 | grep -o 'arch=\w*'

en mi sistema Linux Core2 imprime:

arch=native
arch=core2        <----- This one
arch=native

Este comando compila /dev/nullcomo C ( -xc). gcc/ clang-v prints its internal commands as it runs them, with full command line args. Even with-E (preprocessor-only), the-xc option leads gcc to pass the full set of-march=lo que sea -mmmx -msse2 ...` opciones.

grep -oimprime solo la parte coincidente de las líneas que coinciden. \w*coincide con 0 o más caracteres de palabra.


Necesita una versión lo suficientemente nueva de clang o gcc para reconocer la microarquitectura de su CPU y asignarla a un nombre en clave. Una versión antigua de gcc simplemente imprimirá algo como -march=core2incluso para un Haswell, -mtune=intelo algo así.

Otro enfoque similar es filtrar la salida de asm de gcc -fverbose-asm, que incluye las opciones de optimización como comentarios. No conozco un equivalente de sonido metálico para esto.

gcc -xc /dev/null -O3 -fverbose-asm -march=native -o- -S | grep -o 'arch=\w*'

arch=core2

Esto funciona en un sistema Haswell: vea este ejemplo en Godbolt Compiler Explorer . Tenga en cuenta -march=haswellen la salida. (Actualización de 2022: -march=skylake-avx512con GCC más antiguo pensando que la CPU más nueva era -march=knl, Xeon Phi Knight's Landing, que es una microarquitectura muy diferente).

¡Interesante y bastante novedoso enfoque! Pregunta: ¿es gcco clangalgo que uno esperaría encontrar en una Mac (no programadora)?
@Bob: IDK, ¡ni siquiera tengo una Mac! Llegué aquí desde la barra lateral de "preguntas calientes de la red". Muchos programas de Unix se distribuyen en forma de fuente, por lo que algunas personas tendrán un compilador de C en su Mac, incluso si no programa en absoluto, o no en C. (Algunos módulos de Perl vienen con C para compilar, por ejemplo. ) De todos modos, esta respuesta estaba dirigida principalmente a personas que usan gcc o clang en su Mac con bastante regularidad, pero que no son expertos en hardware de Intel. Es posible ser un programador sin ser un geek del hardware.
Creo que clangsolo está disponible después de instalar xcode. Besdies es suficiente para usar clangen lugar declang-3.5
clang: error: the clang compiler does not support '-march=native'. Usando la clangversión de Apple 13.1.6( clang-1316.0.21.2.5).
@ijoseph: Todavía funciona en mi escritorio Linux x86-64 con clang 14.0.6. (Por supuesto, ese es el sonido de la línea principal, no el sonido de Apple). Todavía no tengo una Mac, así que no puedo probar ninguna otra idea. ¿Alguna sugerencia sobre cómo arreglar esta respuesta?

Hay una aplicación para iOS y Mac llamada Mactracker . Muestra varias piezas de información sobre Mac.

No estoy seguro de por qué esto fue rechazado. Esta es una aplicación gratuita y muy útil. Simplemente busque el modelo, vaya a la pestaña General y le dirá exactamente lo que quiere.

Vaya a uno de los sitios de actualización de Mac e ingrese su número de serie/número de modelo de Acerca de esta Mac.

Ejemplo http://www.everymac.com/ultimate-mac-lookup/

Ingrese el número de serie

Ingrese la información de Cappcha.

Obtendrá las especificaciones de resumen

Haga clic en Completar especificaciones de Mac.

Y le dirá los detalles de los chips (22nm Haswell i5 4250U) además de las comparaciones con los modelos anteriores y posteriores.

En el menú de Apple (arriba a la izquierda de la pantalla), seleccione Acerca de esta Mac. Luego busque un botón que diga Más información, se abrirá una ventana con TODO sobre la mac, incluido su número de modelo (MacBook Pro 12.3, por ejemplo), luego use la aplicación MacTracker mencionada anteriormente o simplemente busque ese nombre y obtendrá esa información. .

La mejor manera que encontré para encontrar información sobre su CPU en una computadora Apple es ejecutar la utilidad MacCPUID de Intel. Puedes encontrarlo aquí .

Si está aquí para obtener las instrucciones compatibles de una CPU Apple Silicon Mac como yo, querrá:

$ sysctl hw
hw.ncpu: 8
hw.byteorder: 1234
hw.memsize: 17179869184
hw.activecpu: 8
hw.perflevel0.physicalcpu: 4
hw.perflevel0.physicalcpu_max: 4
hw.perflevel0.logicalcpu: 4
hw.perflevel0.logicalcpu_max: 4
hw.perflevel0.l1icachesize: 196608
hw.perflevel0.l1dcachesize: 131072
hw.perflevel0.l2cachesize: 12582912
hw.perflevel0.cpusperl2: 4
hw.perflevel1.physicalcpu: 4
hw.perflevel1.physicalcpu_max: 4
hw.perflevel1.logicalcpu: 4
hw.perflevel1.logicalcpu_max: 4
hw.perflevel1.l1icachesize: 131072
hw.perflevel1.l1dcachesize: 65536
hw.perflevel1.l2cachesize: 4194304
hw.perflevel1.cpusperl2: 4
...
¿Cómo se puede usar esto para identificar la CPU?
@nohillside lo suficientemente justo, eso sysctl -a machdep.cpusigue siendo

Basado en las soluciones proporcionadas en este hilo y otros, he elaborado este pequeño script.

#!/bin/bash

# List CPU information
# https://apple.stackexchange.com/questions/352769/does-macos-have-a-command-to-retrieve-detailed-cpu-information-like-proc-cpuinf/352770

# Also : https://apple.stackexchange.com/questions/238777/how-do-i-identify-which-cpu-a-macbook-uses/238789#238789
# Interesting output with `system_profiler SPHardwareDataType | grep Processor`

usage () {
    printf "%s \n" "Usage : ./cpu_info.sh [--short | --all | --help]"
    printf "\n"
    printf "%s \n" "--short : print CPU Brand/Model, Core count, Thread count."
    printf "%s \n" "--all   : print all cpu information."
    printf "%s \n" "--help  : print this usage message."
}

if [ -z "$1" ]; then
    sysctl -n machdep.cpu.brand_string
    sysctl -a | grep machdep.cpu.core_count | sed 's/machdep.//'
    sysctl -a | grep machdep.cpu.thread_count | sed 's/machdep.//'
elif [ "$1" = "--all" ]; then
    sysctl -a | grep machdep.cpu
elif [ "$1" = "--short" ]; then
    sysctl -n machdep.cpu.brand_string
    sysctl -a | grep machdep.cpu.core_count | sed 's/machdep.//'
    sysctl -a | grep machdep.cpu.thread_count | sed 's/machdep.//'
elif [ "$1" = "--help" ]; then
    usage
else
    usage
fi

Te da una salida como esta:

❯ ./cpu_info.sh
Intel(R) Core(TM) i7-1068NG7 CPU @ 2.30GHz
cpu.core_count: 4
cpu.thread_count: 8

Siéntase libre de copiar/pegar desde aquí o vaya al repositorio de GitHub correspondiente para obtener la última versión disponible: https://github.com/kral2/osx-scripts/blob/main/system-config/cpu_info.sh

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página enlazada cambia.
Buena sugerencia, gracias. Agregué el código en línea como referencia.