La CPU sovint es coneix com a cervell de l'ordinador i, igual que el cervell humà, consta de diverses parts que treballen juntes per processar informació. Hi ha parts que reben informació, parts que emmagatzemen informació, parts que processen informació, parts que ajuden a generar informació i molt més. A la descripció d'avui, tractarem els conceptes bàsics que formen una CPU i com funcionen tots junts per alimentar el vostre equip.

Heu de saber que aquest article és el nostre Sèrie Anatomia També hi ha una sèrie especial que desmunta tota la tecnologia que hi ha darrere dels components del PC Disseny de CPU S’endinsa en el procés de disseny de la CPU i en el funcionament intern de les coses. Una tècnica de lectura molt recomanable. Aquest article sobre anatomia revisarà alguns dels conceptes bàsics de la sèrie de CPU a un nivell superior i amb contingut addicional.

En comparació amb els articles anteriors de la nostra sèrie d’anatomia, això serà inevitablement més abstracte. Quan mireu una cosa com una font d'alimentació, podeu veure clarament condensadors, transformadors i altres components. Amb una CPU moderna això no és possible, ja que tot és tan petit i Intel i AMD no revelen els seus dissenys al públic. La majoria de dissenys de CPU són propietaris, de manera que els temes tractats en aquest article representen les característiques generals de totes les CPU.

NOTÍCIES TÈCNIQUES Anatomia del maquinari de la sèrie

Podeu tenir un ordinador d’escriptori a la feina, a l’escola o a casa. Podeu utilitzar-ne una per calcular les declaracions d’impostos o jugar als darrers jocs; fins i tot podeu començar a configurar i editar equips. Però, fins a quin punt coneixeu els components que formen un PC?




Comencem, doncs, a bussejar. Tots els sistemes digitals necessiten algun tipus d’Unitat Central de Processament. Bàsicament, un programador escriu el codi independentment de la seva tasca i després una CPU executa aquest codi per produir el resultat desitjat. La CPU també es connecta a altres parts d’un sistema com ara memòria i E / S per ajudar-lo a alimentar-la amb dades rellevants, però avui no cobreix aquests sistemes.




Plànol de la CPU: un ISA

Quan analitzeu qualsevol CPU, el primer que us trobareu Arquitectura de conjunts d’instruccions (JESÚS). Aquest és un resum metafòric de com funciona la CPU i de com interactuen tots els sistemes interns. De la mateixa manera que hi ha moltes races de gossos dins de la mateixa raça, hi ha molts tipus diferents d’ISA en què es pot construir una CPU. Els dos tipus més comuns x86 (disponible en ordinadors de sobretaula i portàtils) i COLL (disponible en dispositius integrats i mòbils).

On alguns altres Té més aplicacions de nínxol com MIPS, RISC-V i PowerPC. Un ISA determinarà quines instruccions pot processar la CPU, com interactua amb la memòria i les memòries cau, com es divideix el treball en moltes etapes de processament i molt més.







Per cobrir les parts principals d'una CPU, seguirem el camí seguit d'una execució d'ordres. Els diferents tipus d’instruccions poden seguir diferents camins i utilitzar diferents parts d’una CPU, però aquí generalitzarem per cobrir les parts més grans. Començarem pel disseny més bàsic d’un processador d’un sol nucli i anirem afegint complexitat a mesura que assolim un disseny més modern.

Unitat de Control i Bus

Les parts d’una CPU es poden dividir en dues: unitat de control i bus. Penseu en un vagó de tren. El motor mou el tren, però el conductor estira les palanques darrere de les escenes i controla els diferents aspectes del motor. El mateix passa amb la CPU.




El camí de dades és com un motor i, com el seu nom indica, el camí per on flueixen les dades mentre es processen. El bus rep les entrades, les processa i les envia al lloc adequat quan estigui complet. La unitat de control indica al bus com treballar com el conductor del tren. Depenent de les instruccions, el bus encamina els senyals a diferents components, encén i apaga diferents parts del bus i controla l'estat de la CPU.




Cicle d’instruccions - Obteniu

El primer que ha de fer la nostra CPU és esbrinar quines instruccions hem de seguir a continuació i transferir-les de la memòria a la CPU. Les instruccions les genera un compilador i són específiques de l’ISA de la CPU. ISA, càrrega, emmagatzematge, recollida, extracció, etc. No obstant això, hi ha molts tipus específics d’instruccions específiques per a cada ISA. La unitat de control sabrà quins senyals s’han de dirigir cap a cada tipus d’instrucció.

Per exemple, quan s'executa un fitxer .exe al Windows, el codi d'aquest programa es mou a la memòria i s'indica a la CPU des de quina adreça s'ha iniciat la primera ordre. La CPU sempre manté un registre intern que manté la ubicació de memòria de la següent ordre a executar. Això s’anomena comptador de programes (PC).

Quan sap per on començar, el primer pas del cicle d’instruccions és obtenir-ne aquesta. Això mou la instrucció de la memòria al registre d'instruccions de la CPU i portar escena. Realment, la instrucció ja estarà a la memòria cau de la CPU, però cobrirem una mica aquests detalls.

Comandament bucle: descodificació

Si la CPU té una instrucció, ha d’esbrinar específicament de quin tipus d’instrucció es tracta. Això Descodificació escena. Cada ordre té un conjunt específic de bits anomenat Opcode que indica a la CPU com interpretar-lo. Això és similar a com s’utilitzen diferents extensions de fitxer per indicar a l’ordinador com interpretar un fitxer. Per exemple, els fitxers .jpg i .png són fitxers d'imatge, però organitzen les dades de manera diferent, de manera que l'ordinador necessita conèixer el tipus per interpretar-les correctament.

Depenent de la complexitat de l'ISA, la descodificació d'instruccions de la part de la CPU es pot complicar. Tot i que un ISA com RISC-V només té algunes dotzenes d’instruccions, x86 pot tenir milers de valors. En una CPU Intel x86 típica, la descodificació és una de les més difícils i ocupa molt d’espai. Els tipus d’instruccions més habituals que descodificarà una CPU són les instruccions de memòria, aritmètica o derivació.

3 tipus bàsics d'ensenyament

Una instrucció de memòria pot ser com "llegir el valor 1234 des de l'adreça de memòria fins al valor A" o "escriure el valor B a l'adreça de memòria 5678". Una ordre aritmètica podria ser com "Afegiu el valor A al valor B i emmagatzemeu el resultat al valor C." Una instrucció de sucursal pot ser semblant a "Executeu aquest codi si el valor C és positiu o executeu aquest codi si el valor C és negatiu". Un programa típic podria encadenar-los per revelar alguna cosa com "Afegiu el valor a l'adreça de memòria 1234 al valor de l'adreça de memòria 5678 i emmagatzemeu-lo a 4321 si el resultat és positiu o 8765 si el resultat és negatiu". .

Abans de començar a seguir les instruccions que hem descodificat, hem de fer una pausa per parlar dels enregistraments.

Una CPU té un fragment de memòria molt petit però molt ràpid anomenat registre. En una CPU de 64 bits, cadascun d’ells contindria 64 bits i només en podria tenir algunes dotzenes per al nucli. S’utilitzen per emmagatzemar els valors en ús i es poden considerar com una memòria cau L0. En els exemples d’instruccions anteriors, els valors d’A, B i C s’emmagatzemen en registres.

ALU

Tornem a la fase d'execució. Això serà diferent per als 3 tipus d’instruccions que hem esmentat anteriorment, de manera que les considerarem per separat.

Començant per instruccions aritmètiques, ja que són les més fàcils d’entendre. Aquestes instruccions s’introdueixen en una unitat de registre aritmètica (ALU) per al seu processament. L’ALU és un circuit que normalment rep dues entrades amb un senyal de control i produeix un resultat.

Penseu en una calculadora bàsica que utilitzeu a l'escola secundària. Per executar una transacció, introduïu dos números d'entrada i quin tipus de transacció voleu fer. La calculadora calcula i dibuixa el resultat. A l’ALU de la nostra CPU, el tipus d’operació ve determinat pel codi d’opció de la instrucció i el controlador l’envia a l’ALU. A més de l'aritmètica bàsica, les ALU també poden realitzar operacions a bits com AND, OR, NOT i XOR. ALU també proporcionarà informació sobre l'estat de la unitat de control sobre el càlcul que acaba de completar. Això pot incloure coses com si el resultat és positiu, negatiu, zero o desbordament.

Una ALU s’associa amb més freqüència a operacions aritmètiques, però també es pot utilitzar per a instruccions de memòria o ramificació. Per exemple, la CPU pot necessitar calcular una adreça de memòria donada com a resultat d'una operació aritmètica anterior. També pot ser necessari calcular el desplaçament per afegir al comptador del programa requerit per una instrucció de sucursal. Alguna cosa com "Si el resultat anterior és negatiu, ometeu les 20 instruccions".

Instruccions de memòria i jerarquia

Per obtenir instruccions de memòria, Jerarquia de la memòria. Això representa la relació entre memòries cau, memòria RAM i emmagatzematge principal. Quan una CPU rep una instrucció de memòria per a una peça de dades que encara no es troba localment als seus registres, baixa per la jerarquia de memòria fins que la troba. La majoria de les CPU modernes contenen tres nivells de memòria cau: L1, L2 i L3. El primer lloc que comprovarà la CPU és la memòria cau L1. Aquest és el més petit i ràpid dels tres nivells de memòria cau. Normalment, la memòria cau L1 es divideix en una porció per a dades i una altra per a instruccions. Recordeu que les instruccions s’han de recuperar de la memòria com les dades.

Una memòria cau L1 típica pot tenir diversos centenars de KB. Si la CPU no troba el que busca a la memòria cau de L1, comprovarà la memòria cau de L2. Pot tenir una mida de diversos MB. El següent pas és la memòria cau L3, que pot tenir diverses desenes de MB. Si la CPU no troba les dades que necessita a la memòria cau de L3, passa a la memòria RAM i finalment a l’emmagatzematge principal. A mesura que avanceu amb cada pas, l'àrea útil augmenta en un ordre aproximadament de magnitud, però també la demora.

Un cop la CPU hagi trobat les dades, mostrarà la jerarquia perquè hi hagi accés ràpid a la CPU en el futur si cal. Aquí hi ha molts passos, però proporciona a la CPU un accés ràpid a les dades que necessita. Per exemple, la CPU pot llegir dels seus registres interns en només un o dos cicles, L1 en pocs cicles, L2 en deu o més cicles i algunes dotzenes de L3. Si ha d’anar a la memòria o a la memòria principal, poden trigar desenes de milers o fins i tot milions de cicles. Depenent del sistema, cada nucli tindrà la seva pròpia memòria cau L1 dedicada, compartirà un L2 amb un altre nucli i compartirà un L3 entre quatre o més grups bàsics. Més endavant en aquest article parlarem més sobre processadors multi-nucli.

Instruccions de branca i salt

L’últim dels tres tipus principals d’instruccions és la instrucció de branca. Els programes moderns passen per alt tot el temps i una CPU poques vegades executa més d’una dotzena d’instruccions contigües sense una branca. Les instruccions de sucursal provenen d'elements de programació com ara sentències if, declaracions per a bucles i declaracions de retorn. Tots s'utilitzen per interrompre l'execució del programa i passar a una secció de codi diferent. També hi ha instruccions de salt, que són instruccions de sucursal sempre rebudes.

Les branques condicionals són particularment difícils per a la CPU, ja que poden executar diverses instruccions al mateix temps i és possible que no puguin determinar el resultat d'una branca fins que no comenci a les instruccions següents.

Per entendre completament per què es tracta d’un problema, hem de fer un altre desviament i parlar de canonades. Cada pas del bucle d'instruccions pot trigar diversos cicles en completar-se. Això vol dir que, mentre s’obté una instrucció, l’ALU d’una altra manera estarà inactiva. Per maximitzar l’eficiència d’una CPU, dividim cada etapa en un procés anomenat pipeline.

La forma clàssica d’entendre-ho és per analogia amb la bugada. Teniu dues càrregues per fer i rentat i assecat, que triguen una hora cadascun. Després de posar la primera càrrega a la rentadora i després a l’assecadora, podeu iniciar la segona càrrega. Això trigarà quatre hores. Tot i això, si heu interromput el treball i heu iniciat el segon rentat de càrrega mentre la primera càrrega s’assecava, podeu fer les dues càrregues en un termini de tres hores. El tall d’una hora es basa en el nombre de càrregues que tingueu i el nombre de rentadores i assecadores. Es triga dues hores a fer una sola càrrega, però la superposició augmenta l’eficiència global de 0,5 càrrega / hora a 0,75 càrrega / hora.

Les CPU utilitzen el mateix mètode per augmentar l'eficiència de la instrucció. Una CPU ARM o x86 moderna pot tenir més de 20 fases de canonades en qualsevol punt, cosa que significa que el nucli està processant més de 20 instruccions diferents alhora. Cada disseny és únic, però hi pot haver 4 bucles per obtenir una secció de mostra, 6 bucles per a la descodificació, 3 bucles per a l'execució i 7 bucles per actualitzar els resultats a la memòria.

Tornant a les sucursals, esperem que pugueu començar a veure el problema. Si no sabem que una ordre és una branca fins al bucle 10, comencem a implementar 9 instruccions noves que poden ser invàlides si es rep la branca. Per superar aquest problema, les CPU tenen estructures molt complexes anomenades estimadors de branca. Utilitzen conceptes similars de l’aprenentatge automàtic per intentar predir si agafar una branca o no. Les complexitats dels predictors de sucursals estan molt més enllà de l’abast d’aquest article, però, a nivell bàsic, supervisen l’estat de les sucursals anteriors per esbrinar si s’adopta una propera sucursal. Els estimadors de sucursals moderns poden tenir una precisió del 95% o superior.

Un cop conegut amb certesa el resultat de la branca (completada aquesta etapa de la canonada), el comptador del programa s'actualitzarà i la CPU continuarà executant la següent instrucció. Si la branca s’intueix incorrectament, la CPU descarta totes les instruccions que va començar a executar per error després de la branca i es reinicia des del lloc correcte.

Execució inusual

Ara que ja sabem implementar els tres tipus d’instruccions més habituals, donem un cop d’ull a algunes de les funcions més avançades d’una CPU. Gairebé tots els processadors moderns no realitzen les instruccions en l'ordre en què s'han rebut. Un paradigma anomenat execució fora d'ordre S'utilitza per minimitzar el temps d'inactivitat mentre s'espera que finalitzin altres instruccions.

Si una CPU sap que una propera instrucció requereix dades que no estaran disponibles a temps, pot canviar l'ordre d'instruccions i portar una instrucció independent de les altres parts del programa mentre espera. Aquesta reordenació d'instruccions és una eina extremadament potent, però està lluny de ser l'únic truc que fan servir les CPU.

Una altra característica de millora del rendiment s’anomena preobtenció. Si enteneu quant triga una instrucció aleatòria a completar-se des del principi fins al final, trobareu que l'accés a la memòria ocupa la major part del temps. Un prefabricador és una unitat de la CPU que intenta mirar instruccions futures i quines dades necessitarà. Si veu una entrada que requereix dades que la CPU no emmagatzema a la memòria cau, arriba a la memòria RAM i emmagatzema aquestes dades. Per tant, porteu el nom per endavant.

Els acceleradors i el futur

Una altra característica important que comença a incloure's a les CPU són els acceleradors específics de tasques. Es tracta de circuits que fan tota la feina el més ràpidament possible per a una petita tasca. Això pot incloure xifratge, codificació de suports o aprenentatge automàtic.

La CPU pot fer aquestes coses per si sola, però és molt més eficient tenir una unitat dedicada a elles. Un gran exemple d'això són els gràfics integrats en comparació amb una GPU dedicada. Per descomptat, la CPU pot realitzar els càlculs necessaris per al processament de gràfics, però tenir una unitat dedicada per a ells ofereix ordres de rendiment més grans. Amb l’augment dels acceleradors, el nucli real d’una CPU només pot ocupar una petita fracció del xip.

La imatge següent mostra una CPU Intel de fa uns anys. La major part de l'espai l'ocupen els nuclis i la memòria cau. La segona imatge següent és per a un nou xip AMD. La major part de l’espai allà l’utilitzen components diferents dels nuclis.

Multi Core

L'última gran característica a cobrir és com podem connectar un grup de CPU individuals junts per formar una CPU multi-core. No és tan senzill com posar diverses còpies del disseny de nucli únic que hem esmentat anteriorment. De la mateixa manera que no hi ha cap manera fàcil de convertir un programa de fil únic en un programa de múltiples fils, el mateix concepte s'aplica al maquinari. Els problemes provenen de la dependència entre els nuclis.

Per exemple, per a un disseny de 4 nuclis, la CPU ha de poder emetre instruccions 4 vegades més ràpid. També necessita quatre interfícies separades per a la memòria. Amb diverses organitzacions que poden treballar en les mateixes dades, harmonia ve consistència s’ha de resoldre. Si ambdós nuclis fossin instruccions de procés amb les mateixes dades, com sabrien qui té el valor correcte? Què passa si un nucli canviava les dades però no arribava a temps a l’altre nucli per executar-lo? Per eliminar aquests conflictes s’han d’utilitzar algoritmes i controladors complexos, ja que tenen memòries cau separades que poden emmagatzemar dades conflictives.

A mesura que augmenta el nombre de nuclis d’una CPU, la predicció correcta de les branques és extremadament important. Com més nuclis executin instruccions alhora, més probable és que un d'ells processi una instrucció de sucursal. Això significa que el flux d'instruccions pot canviar en qualsevol moment.

Normalment, els nuclis individuals gestionaran els fluxos d’instruccions de diferents fils. Això ajuda a reduir la dependència entre els nuclis. Si comproveu el Gestor de tasques, veureu que un nucli està treballant massa i els altres treballen massa. Molts programes no estan dissenyats per a usos múltiples. També pot haver-hi algunes situacions en què sigui més eficient que un nucli faci la feina en lloc de pagar les sancions generals per intentar dividir la feina.

Disseny físic

Gran part d’aquest article s’ha centrat en el disseny arquitectònic d’una CPU on es troba la major part de la complexitat. Tot i això, cal crear-ho al món real i això afegeix un altre nivell de complexitat.

S'utilitza un senyal de rellotge per sincronitzar tots els components del processador. Els processadors moderns solen funcionar entre 3,0 GHz i 5,0 GHz i apareixen sense canvis durant la darrera dècada. En cadascun d'aquests cicles, s'encenen i s'apaguen milers de milions de transistors dins d'un xip.

Els rellotges són importants per assegurar-se que tots els valors es mostren a l’hora correcta a mesura que avança cada etapa de la canonada. El rellotge determina quantes ordres pot processar una CPU per segon. L’augment de la seva freqüència mitjançant l’overclocking farà que el xip sigui més ràpid, però també augmentarà el consum d’energia i la producció de calor.

La calor és el pitjor enemic de la CPU. A mesura que l’electrònica digital s’escalfa, els transistors microscòpics poden començar a fallar. Si no s’elimina aquesta calor, pot danyar un xip. És per això que totes les CPU vénen amb emissors de calor. El motlle de silici real d’una CPU només pot ocupar el 20% de la superfície d’un dispositiu físic. L’augment de la petjada permet que la calor s’estengui de manera més uniforme pel refrigerador. També permet la connexió de més pins amb components externs.

Darrere de les CPU modernes hi pot haver mil o més pins d'entrada i sortida. Un xip mòbil només pot tenir uns quants centenars de pins, però la majoria de peces de l’ordinador dins del xip. Independentment del disseny, aproximadament la meitat es dedica a la distribució d’energia i la resta utilitza comunicacions de dades. Això inclou la comunicació amb memòria RAM, chipset, emmagatzematge, dispositius PCIe i molt més. Amb CPU d’alt rendiment que dibuixen cent o més amplificadors a plena càrrega, necessiten centenars de pins per repartir el dibuix actual de manera uniforme. Els pins solen ser xapats en or per augmentar la conductivitat elèctrica. Diferents fabricants utilitzen diferents disposicions de pins en moltes gammes de productes.

Combinant-ho tot amb un exemple

Farem una ullada ràpida al disseny de la CPU Intel Core 2 per acabar amb les coses. Com que va ser el 2006, és possible que algunes peces siguin antigues, però no hi ha detalls sobre dissenys més recents.

Començant per la part superior, tenim la memòria cau d’instruccions i ITLB. Translation Lookaside Buffer (TLB) s’utilitza per ajudar la CPU a saber on anar a la memòria per trobar la instrucció que necessita. Aquestes instruccions s’emmagatzemen en una memòria cau d’instruccions L1 i després s’envien a un predecodificador. L'arquitectura x86 és extremadament complexa i densa, de manera que hi ha molts passos per descodificar. Mentrestant, l'estimador de la sucursal i el prefabricador avancen els possibles problemes causats per les instruccions entrants.

A partir d’aquí, les instruccions s’envien a una cua d’instruccions. Recordeu com el disseny inusual permet a una CPU executar instruccions i escollir-ne la més oportuna. Aquesta cua conté instruccions actuals que la CPU té en compte. Un cop la CPU aprèn quina ordre és millor executar, també es resol en microtransaccions. Tot i que una instrucció pot contenir una tasca complexa per a la CPU, les microoperacions són tasques detallades que la CPU pot interpretar més fàcilment.

Tot seguit, aquestes instruccions introduïu la taula d’àlies de registre, el ROB i l’estació de reserves. La funcionalitat completa d’aquests tres components és una mica complexa (pensem que curs universitari de nivell superior), però s’utilitzen en un procés extraordinari per ajudar a gestionar les dependències entre instruccions.

Un únic "nucli" en realitat tindria moltes ALU i ports de memòria. Fins que un ALU o un port de memòria estigui llest per utilitzar-se, les transaccions entrants es col·loquen a l'estació de reserva. Un cop el component requerit estigui disponible, la instrucció es processa amb l'ajut de la memòria cau de dades L1. Els resultats de sortida es guarden i la CPU està preparada per executar-se a la següent instrucció. Tant!

Tot i que aquest article no és una guia definitiva de com funciona exactament cada CPU, hauria de donar-vos una bona idea del seu funcionament intern i de la seva complexitat. Obbviament, ningú, excepte AMD i Intel, sap com funcionen les seves CPU. Cada secció d’aquest article representa tot el camp de la investigació i el desenvolupament, de manera que la informació que es presenta aquí només dibuixa la superfície.

Segueix llegint

Si voleu obtenir més informació sobre com es van dissenyar els diversos components tractats en aquest article, consulteu-ho. Part 2 la nostra sèrie de disseny de CPU. Si esteu més interessats en conèixer com es redueix físicament una CPU a un nivell de transistor i silici, Part 3.

Dreceres de compres:
  • AMD Threadripper 3990X obert Amazon
  • AMD Ryzen 9 3950X activat Amazon
  • AMD Ryzen 7 3700X activat Amazon
  • AMD Ryzen 5 3600 obert Amazon
  • Intel Core i9-9900K activat Amazon