Microcode este un program care implementează un set de instrucțiuni pentru procesor . Așa cum o singură instrucțiune de limbaj de nivel înalt este tradusă într-o serie de instrucțiuni de mașină , într-un procesor care utilizează microcod, fiecare instrucțiune de mașină este implementată ca o serie de microinstrucțiuni - microprogram, microcod.
Pe majoritatea computerelor care folosesc microcod, acesta nu este prezent în memoria principală , ci într-o memorie specială de mare viteză ( magazinul de control în limba engleză ), cum ar fi, de exemplu, în chipset-ul din seria 588 cu ALU KA588VS2 și memoria de control ROM KA588VU2. Această memorie poate fi doar citire sau citire-scriere; în acest din urmă caz, microcodul poate fi încărcat din memoria numai în citire în timpul pornirii procesorului. Capacitatea de a schimba microcodul vă permite să remediați erorile găsite și să adăugați implementarea de noi instrucțiuni. Microcodul permite, de asemenea, configurarea microarhitecturii computerului pentru a emula o arhitectură diferită (de obicei mai complexă) .
Microprogramele sunt alcătuite dintr-o serie de microinstrucțiuni denumite adesea operații elementare . Microinstrucțiunile controlează procesorul la cel mai de jos nivel. De exemplu, o singură microinstrucțiune poate conține următoarele acțiuni:
Pentru ca o microinstrucțiune să descrie întregul set, microinstrucțiunile sunt adesea făcute destul de „large”, de exemplu, cu o lungime de 56 de biți sau chiar mai mult. Micro-instrucțiunile, sau micro-instrucțiunile, la rândul lor, inițiază așa-numitele micro-operații. Micro-operațiile sunt transformări elementare de date; exemplele includ următoarele:
Abordarea procesoarelor de microprogramare (microcode) a fost propusă în 1953 de Vilks și Stringer [1] .
Inițial, microcodul a fost folosit ca o modalitate mai ușoară de a dezvolta un dispozitiv de control al procesorului. Anterior, setul de instrucțiuni era codificat, fiecare instrucțiune de mașină (adăugare, schimbare, copiere) a fost implementată direct în circuit . Acest lucru a dat viteză mare, dar pe măsură ce setul de instrucțiuni a crescut, a devenit din ce în ce mai dificil de implementat sub forma unui circuit și instrucțiuni de depanare de o complexitate din ce în ce mai mare. Microcode a atenuat această problemă, permițând inginerilor de proiectare să înlocuiască circuitele complexe cu microprogramare atunci când implementează o instrucțiune complexă. În plus, microcodul putea fi schimbat cu ușurință mai târziu în procesul de proiectare, dar circuitul a fost mult mai dificil de schimbat. În acest fel, microcodul a facilitat proiectarea procesoarelor, rezultând un set de instrucțiuni mai complex .
Utilizarea firmware-ului a atenuat, de asemenea, problema lățimii de bandă a memoriei. În anii 1970, creșterea vitezei procesorului a depășit cu mult creșterea vitezei memoriei. Unele metode de accelerare, cum ar fi cache -urile pe mai multe niveluri , au atenuat oarecum problema, dar nu au rezolvat-o. Utilizarea microcodului a ajutat foarte mult aici, deoarece mai puține instrucțiuni, mai complexe, necesitau mai puțin schimb de memorie. De exemplu, dacă întreaga operație pe un șir de caractere este efectuată de o instrucțiune de mașină, atunci în timpul executării acesteia nu este necesar să se preia alte instrucțiuni din memorie.
Lista arhitecturilor care utilizează principiul microcodului includea IBM System/360 și DEC VAX , al căror set de instrucțiuni a fost implementat folosind un firmware complex. Abordarea, care utilizează instrucțiuni de microcod din ce în ce mai complexe, a fost numită ulterior CISC .
Mișcarea RISC este uneori văzută ca opus arhitecturii cu microcod, dar numai procesoarele RISC timpurii nu au folosit microcod, în timp ce cele mai recente au putut [1] .
Tehnologii de procesoare digitale | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arhitectură | |||||||||
Arhitectura set de instrucțiuni | |||||||||
cuvânt mașină | |||||||||
Paralelism |
| ||||||||
Implementări | |||||||||
Componente | |||||||||
Gestionare a energiei |