Qui dissenya la CPU?
Tots pensem en la CPU com a "bossos" d'un ordinador, però què significa això? Què passa dins amb els milers de milions de transistors per fer que el teu ordinador treballi? En aquesta mini sèrie de quatre parts ens centrarem en el disseny del maquinari de l'ordinador, cobrint les entranyes i fora del que fa que un ordinador funcioni.
La sèrie cobrirà l'arquitectura de l'ordinador, el disseny de circuits de processadors, integració de VLSI (i integració a gran escala), el teixit i les futures tendències en informàtica. Si sempre t'has interessat en els detalls de com treballen els processadors a dins, queda't aquí perquè això és el que vols saber per començar.
Començarem a un nivell molt alt del que fa un processador i com els blocs de construcció es reuneixen en un disseny de funcionament. Això inclou nuclis dels processadors, la jerarquia de memòria, la predicció de la branca, i més. Primer, necessitem una definició bàsica del que fa una CPU. L'explicació més simple és que una CPU segueix un conjunt d' instruccions per realitzar algunes operacions en un conjunt d' entrada. Per exemple, això podria llegir un valor de la memòria, i afegir-lo a un altre valor, i finalment emmagatzemar el resultat a la memòria en un lloc diferent. També podria ser alguna cosa més complexa com dividir dos nombres si el resultat del càlcul anterior fos més gran que zero.
Quan voleu executar un programa com un sistema operatiu o un joc, el mateix programa és una sèrie d' instruccions per a que s' executi la CPU. Aquestes instruccions estan carregades de la memòria i en un processador simple, s' executen un per un fins que acabi el programa. Mentre que els desenvolupadors de programari escriuen els seus programes en idiomes d'alt nivell com C++ o Python, per exemple, el processador no ho pot entendre. Només entén 1s i 0s per tant necessitem una manera de representar el codi en aquest format.
Els programes estan compilats en un conjunt d' instruccions de baix nivell anomenades Idioma de muntatge com a part d'una arquitectura del conjunt d' instruccions (ISA). Aquest és el conjunt d' instruccions que la CPU es construeix per entendre i executar. Alguns de les ISA més comuns són x86, MIPS, ARM, RISC-V, i el PowerPC. Igual que la sintaxi per escriure una funció en C++ és diferent d' una funció que fa el mateix en Python, cada ISA té una sintaxi diferent.
Aquests ISAs es poden dividir en dues categories principals: amplada fixa i longitud variable. L'ISISC-VSA usa instruccions de longitud fixa que significa un cert nombre predefinit de bits en cada instrucció determinarà quin tipus d' instruccions és. Això és diferent de x86 que usa instruccions de longitud variable. En x86, les instruccions es poden codificar de diferents maneres i amb diferents números de bits per a diferents parts. A causa d'aquesta complexitat, el descodificador d' instruccions de les CPU x86 normalment és la part més complexa de tot el disseny.
Les instruccions de longitud fixa permeten la descodificació més fàcil degut a la seva estructura regular, però limitar el nombre d' instruccions totals que un ISA pot suportar. Mentre que les versions comunes de l'arquitectura RISC-V tenen unes 100 instruccions i són de codi obert, x86 és propietari i ningú sap en realitat quantes instruccions hi ha. La gent normalment creu que hi ha milers de x86 instruccions però el nombre exacte no és públic. Malgrat les diferències entre les ISA, totes porten bàsicament la mateixa funcionalitat bàsica.
Exemple d'algunes de les instruccions RISC-V. El codi d'opinió de la dreta és de 7 bits i determina el tipus d' instrucció. Cada instrucció també conté bits per a quins registres usar i quines funcions s' han de realitzar. Així és com es trenquen les instruccions de muntatge en binari per a que la CPU entengui.
Ara estem preparats per activar l'ordinador i començar a córrer. L' execució d' una instrucció en realitat té diverses parts bàsiques que es trenquen a través de les moltes fases d' un processador.
El primer pas és recuperar les instruccions de la memòria cap a l'execució de la CPU. En el segon pas, la instrucció es descodificarà de manera que la CPU pugui esbrinar quin tipus d' instrucció és. Hi ha molts tipus incloent instruccions aritmètica, instruccions de branca i instruccions de memòria. Una vegada la CPU sap quin tipus d' instrucció s' executa, els operands per a les instruccions es recullen de la memòria o dels registres interns de la CPU. Si voleu afegir el número A al número B, no podeu fer la suma fins que en realitat coneixeu els valors de A i B. La majoria dels processadors moderns són 64 bits que significa que la mida de cada valor de dades és 64 bits.
64 bits es refereix a l' amplada d' un registre de la CPU, camí de dades i adreça de memòria. Per als usuaris quotidians, la quantitat d'informació que un ordinador pot gestionar en un moment, i és millor entendre en contra del seu cosí arquitectònic més petit, 32 bits. L'arquitectura de 64 bits pot gestionar el doble de bits de tota la informació a la vegada (64 bits contra 32).
Després que la CPU tingui els operands per a les instruccions, es mou a l' etapa d' execució on es fa l' operació a l' entrada. Això podria ser afegint els números, realitzant una manipulació lògica sobre els nombres, o simplement passar els nombres sense modificar-los. Després del resultat es calcula, la memòria pot haver d' accedir a emmagatzemar el resultat o la CPU podria mantenir el valor en un dels seus registres interns. Després del resultat es desa, la CPU actualitzarà l' estat de diversos elements i anirà a la següent instrucció.
Aquesta descripció és, és clar, una gran simplificació i la majoria dels processadors moderns trencaran aquests pocs estadis en 20 o més petits estadis per millorar l'eficiència. Això vol dir que tot i que el processador començarà i acabarà diverses instruccions cada cicle, pot trigar 20 o més cicles per qualsevol instrucció per completar-se des de l' inici. Aquest model s'anomena normalment una canonada des que triga un temps omplir la canonada i per a líquids a superar-la, però un cop estigui plena, obtens una sortida constant.
Tot el cicle que passa una instrucció és un procés molt coreografia, però no totes les instruccions poden acabar alhora. Per exemple, l'addició és molt ràpid mentre la divisió o la càrrega de la memòria pot prendre centenars de cicles. En comptes d' omplir el processador sencer, mentre que una instrucció lenta ha acabat, la majoria de processadors moderns s' executen fora de l' ordre. Això vol dir que determinaran quina instrucció seria el més beneficiós per executar en un temps i altres instruccions de la memòria intermèdia que no estiguin llestes. Si la instrucció actual encara no està preparada, el processador pot saltar endavant en el codi per veure si hi ha alguna altra cosa a punt.
A més de l'execució dels processadors moderns típics moderns que s'utilitzen com s' anomena un Arquitectura supercalar . Això vol dir que en qualsevol moment el processador s'executen moltes instruccions a cada etapa de la canonada. També pot estar esperant a centenars més per començar la seva execució. Per tal de poder executar moltes instruccions alhora, els processadors tindran diverses còpies de cada etapa de canonada dins. Si un processador veu que dues instruccions estan preparades per executar- les i no hi ha dependència entre elles, en comptes d' esperar que acabin separadament, les executarà ambdues alhora. Una implementació comuna d'això es diu Simultanàriament multifil (ST), també coneguda com a Hyper-Threading. Els processadors Intel i ADM actualment donen suport a dues vies STTT quan IBM ha desenvolupat patates que permeten fins a 8way STT.
Per aconseguir aquesta execució coreografia amb cura, un processador té molts elements extra a més del nucli bàsic. Hi ha centenars de mòduls individuals en un processador que cada serveix un propòsit específic, però simplement superarem els bàsics. Els dos més grans i més beneficiosos són la memòria cau i el predictor de branca. Les estructures addicionals que no cobrirem inclouen coses com reordenades de memòria intermèdia, registre de taules d' àlies, i estacions de reserva.
El propòsit de la memòria cau sovint pot ser confús ja que emmagatzemen dades com la RAM o un SSD. El que estableix la memòria cau és que el seu accés és retard i velocitat. Tot i que la RAM és extremadament ràpida, és l'ordre de la magnitud massa lent per a una CPU. Pot necessitar centenars de cicles per a la RAM per respondre amb dades i el processador estaria atrapat amb res a fer. Si les dades no són a la RAM, poden prendre desenes de milers de cicles per obtenir dades d'un SSD per accedir-hi. Sense la memòria cau, els nostres processadors es somriurien a una parada.
Els processadors normalment tenen tres nivells de memòria cau que forma el que es coneix com a jerarquia de memòria . El cau L1 és el més petit i més ràpid, el L2 és al mig, i el L3 és el més gran i lent dels llocs cau. A sobre de la memòria cau de la jerarquia hi ha petites caixes que emmagatzemen un únic valor de dades durant el càlcul. Aquests registres són els dispositius d'emmagatzematge més ràpids del vostre sistema per ordre de magnitud. Quan un programa compilador transforma el llenguatge d'assemblatge, determinarà la millor manera d'utilitzar aquests registres.
Quan la CPU sol·licita dades de la memòria, primer comprovarà si les dades ja estan desades al cau de L1. Si ho és, les dades es poden accedir ràpidament en només uns quants cicles. Si no està present, la CPU comprovarà la memòria L2 i després cercarà la memòria cau del L3. La memòria cau està implementada d'una manera que generalment són transparents al nucli. El nucli simplement demanarà algunes dades a una adreça de memòria especificada i qualsevol nivell en la jerarquia que respongui. A mesura que passem a les fases següents de la jerarquia de memòria, la mida i la retardació normalment augmenten per ordre de magnitud. Al final, si la CPU no pot trobar les dades que busca en cap de les cau, només llavors anirà a la memòria principal (RAM).
En un processador típic, cada nucli tindrà dos caches L1: un per dades i una per instruccions. Els llocs cau L1 normalment són al voltant de 100 kilobytes totals i mida poden variar depenent del xip i de la generació. També hi ha normalment una memòria cau L2 per a cada nucli, tot i que pot ser compartida entre dos nuclis d'algunes arquitectura. Les memòria cau de l'L2 normalment són uns centenars de kilobytes. Finalment, hi ha una única memòria cau L3 compartida entre tots els nuclis i està en l'ordre de desenes de megabytes.
Quan s' executa un processador, les instruccions i els valors de dades que usen més sovint s' executaran a la memòria cau. Això s'accelera molt des que el processador no ha d' anar constantment a la memòria principal per a les dades que necessita. Parlarem més de com aquests sistemes de memòria estan realment implementats en la segona i tercera instal·lació d'aquesta sèrie.
A més de la memòria cau, un dels altres blocs de construcció de claus d'un processador modern és un precís prector de la branca . Les instruccions de la branca són similars a "si" per a un processador. Un conjunt d' instruccions s' executarà si la condició és certa i una altra s' executarà si la condició és falsa. Per exemple, potser voldreu comparar dos nombres i si són iguals, executar una funció, i si són diferents, executeu una altra funció. Aquestes instruccions de les branques són extremadament comunes i poden obtenir aproximadament un 20% de totes les instruccions d'un programa.
A la superfície, aquestes instruccions de la branca poden no semblar un problema, però realment poden ser molt exigents per un processador per tenir raó. Des de cada vegada, la CPU pot estar en procés d'executar deu o vint instruccions a la vegada, és molt important saber-ho el que instruccions d' executar. Pot prendre 5 cicles per determinar si la instrucció actual és una branca i uns altres 10 cicles per determinar si la condició és certa. En aquell moment, el processador pot haver començat a executar dotzenes d' instruccions addicionals sense saber si aquestes eren les instruccions correctes a executar.
Per poder superar aquest tema, tots els processadors d'alta seguretat moderns usen una tècnica anomenada especulació. El que significa això és que el processador seguirà la pista de les instruccions de la branca i diria si es prendrà la branca o no. Si la predicció és correcta, el processador ja ha començat a executar instruccions després de manera que això proveeix un guany de rendiment. Si la predicció és incorrecta, el processador atura l' execució, elimina totes les instruccions incorrectes que s' han iniciat a executar, i comença des del punt correcte.
Aquests predictors són algunes de les primeres formes d'aprenentatge de màquines des que el predictor aprèn el comportament de les branques tal com va. Si prediu incorrectament massa vegades, començarà a aprendre el comportament correcte. Decades d'investigació en les tècniques de predicció de la branca han resultat en acumuracions més grans que el 90% en processadors moderns.
Mentre que l'especulació ofereix grans resultats, des que el processador pot executar instruccions que estan llestes en comptes d'esperar-ne a la línia ocupada, també s'exposa a les vulneràries de seguretat. El famós atac espectral explota errors en la predicció de la branca i l'especulació. L'agressor faria servir el codi especialment dissenyat per aconseguir el processador per executar el codi d'execució especulitiu que filtraria els valors de la memòria. Alguns aspectes d'especulació s'han de redissenyar per assegurar que les dades no es poguessin filtrar i això va resultar en una lleugera caiguda en el rendiment.
L'arquitectura utilitzada en processadors moderns ha avançat molt en les últimes dècades. Les innovacions i el disseny intel·ligent han generat més rendiment i una major utilització del maquinari subjacent. Els creadors de la CPU són molt reservats sobre les tecnologies en els seus processadors, però és impossible saber exactament què passa dins. Amb això es diu, els fonaments de com funcionen els ordinadors són estandarditzats en tots els processadors. Intel·ligència pot afegir la seva salsa secreta per estimular els índexs d' impactes de la memòria cau o ADM pot afegir un predictor avançat de branca, però ambdós aconsegueixen la mateixa tasca.
Aquest primer aspecte i resum cobria la majoria dels bàsics sobre com funcionen els processadors. En la segona part, discutirem com es dissenyen els components de la CPU, les portes lògiques, el rellotge, la gestió d'energia, els esquemes de circuits, i més.
Artículos Relacionados:
- Quanta gent necessita dissenyar una CPU?
- Està bé canviar la CPU?
- Com puc alliberar l'ús de la CPU?
- És segur acabar la CPU?
- Com aprendre a dissenyar la CPU?
- Processador -