L.07Partea 2 / Calculatorul
Cuprins

Bistabilul

Toate circuitele pe care le-am întâlnit până acum suferă de o amnezie totală: uită totul în fracțiunea de secundă în care semnalele de intrare dispar. Pentru a construi un circuit care ține minte, nu avem nevoie de substanțe magice, ci de o simplă întoarcere: un fir de la ieșire se leagă înapoi la intrare. Din această buclă modestă se nasc memoria, ritmul ceasului și, odată cu ele, timpul ordonat al mașinii de calcul.

Termeni: circuit combinațional circuit secvențial SAU-NU zăvor validare bistabil front ceas registru

Circuite cu trecut și fără

Ieșirea unui sumator seamănă cu o oglindă fidelă: ea reflectă strict ceea ce îi pui în față în clipa prezentă. Schimbi semnalele de la intrare, iar ieșirea se adaptează instantaneu; decuplezi firele, iar rezultatul dispare fără urmă. Asemenea circuite se numesc combinaționale. Ele nu au nicio memorie: sunt prizoniere ale prezentului, iar comportamentul lor este descris până la ultimul amănunt de tabelul de adevăr — aceleași intrări vor produce cu sfințenie aceleași ieșiri, astăzi, mâine sau peste zece ani.

Dar o mașină care doar reacționează mecanic la stimulul clipei nu poate purta un raționament lung. Un calculator trebuie să poată salva un rezultat intermediar, să facă o altă operație și să revină la ce a calculat mai devreme. Are nevoie de circuite a căror stare să depindă nu doar de ceea ce primesc acum, ci și de ceea ce s-a petrecut cu o clipă înainte. Acestea sunt circuitele secvențiale. Iar secretul lor nu rezidă în componente noi sau materiale exotice, ci într-o simplă idee de arhitectură: bucla de reacție, drumul prin care ieșirea unui circuit se întoarce și devine propria sa intrare. Memoria nu este o substanță nouă, ci o formă: aceleași porți logice, legate în cerc, dobândesc brusc o istorie și un trecut.

Bucla care se ține de ea însăși

Să ne imaginăm două porți inversoare NU conectate cap la cap, într-un cerc închis: ieșirea primeia intră în a doua, iar ieșirea celei de-a doua se leagă înapoi la intrarea primeia. Este ca doi oameni care stau față în față și decid să spună mereu contrariul a ceea ce aude de la celălalt. Dacă primul spune „0”, al doilea rostește neapărat „1”. Auzind „1”, primul își menține neclintit răspunsul „0”. Fiecare poartă găsește la intrare exact justificarea de care are nevoie pentru a-și păstra starea.

Două porți NU în cerc

Acest inel simplu are două stări perfect stabile și nu are niciun motiv din lume să iasă vreodată din ele: sus 1 și jos 0, ori sus 0 și jos 1. El ține minte un bit fără să mai ceară nimic din exterior, atâta timp cât este alimentat cu curent. Însă buclei îi lipsește ceva esențial: o ușă civilizată de acces. Singurul mod în care îi putem schimba starea în experimentul de mai sus este să forțăm brutal un nod electric din afară, luptându-ne cu tensiunea susținută de poartă. Este evident că avem nevoie de o cale elegantă de a scrie o valoare nouă fără să intrăm în conflict cu circuitul.

Zăvorul

Soluția strălucită este să înlocuim porțile NU cu porți care au două intrări: una rămâne în buclă pentru a susține memoria, iar a doua devine intrare de comandă din exterior. Poarta ideală pentru acest rol este SAU-NU (NOR). Atâta timp cât intrarea de comandă stă liniștită la 0, poarta SAU-NU se comportă exact ca un inversor NU obișnuit, iar inelul își păstrează nestingherit starea. Însă în clipa în care ridicăm comanda la 1, ieșirea este forțată la 0 din motive logice pure, deschizând zăvorul fără nicio luptă electrică.

Două asemenea porți conectate încrucișat alcătuiesc un zăvor (latch). Circuitul are două intrări prietenoase: una numită înscriere (Set), care așază ieșirea pe 1, și alta numită ștergere (Reset), care o aduce la 0. Când ambele comenzi revin la 0, zăvorul se blochează și păstrează valoarea neschimbată la nesfârșit. Iată prima celulă veritabilă de memorie statică: un bit care poate fi scris cu un impuls scurt și care rămâne pe loc după ce impulsul a încetat.

Zăvorul din două porți SAU-NU

Dar ce se întâmplă dacă apăsăm ambele butoane deodată? Ambele ieșiri sunt forțate la 0, încălcând regula firească după care ele trebuie să fie complementare. Iar dacă eliberăm ambele comenzi în aceeași microsecundă, cele două porți se prăbușesc într-o cursă contracronometru pe viață și pe moarte: oricare dintre ele reacționează chiar și cu o nanosecundă mai repede o va bloca pe cealaltă. Rezultatul final devine imprevizibil, depinzând de imperfecțiunile minuscule ale atomilor de siliciu. Aceasta este o stare interzisă — locul fascinant în care fizica materială, cu întârzierile și asperitățile ei, străpunge fațada elegantă a logicii ideale.

Ceasul și frontul

Pentru a stăpâni zăvorul, îi putem adăuga la intrare o poartă de gardă, controlată de un semnal numit validare. Cât timp validarea este 1, ușa este larg deschisă, iar ieșirea urmărește intrarea clipă de clipă — spunem că zăvorul este transparent. În momentul în care validarea cade la 0, ușa se trântește, iar ultima valoare rămasă înăuntru este înghețată.

Totuși, transparența ascunde o mare primejdie. Dacă ieșirea unui circuit este conectată, printr-un lanț de alte porți, înapoi la propria sa intrare, menținerea ușii deschise chiar și pentru un timp scurt permite semnalului nou să facă turul buclei de mai multe ori la rând, zăpăcind circuitul într-o oscilație haotică. Avem nevoie de un mecanism care să nu lase poarta deschisă pe un interval de timp, ci să captureze valoarea într-o singură clipă infinitezimală.

Gândiți-vă la un sas de ecluză sau la două uși succesive ale unui submarin: prima ușă se deschide pentru a primi pasagerul doar atunci când a doua ușă este zăvorâtă etanș. Apoi prima ușă se închide, iar a doua se deschide pentru a-i da drumul mai departe. Niciodată nu există o cale liberă de la un capăt la altul! Legând două zăvoare în cascadă, comandate în opoziție de fază, obținem un bistabil (flip-flop). El își actualizează ieșirea exclusiv în momentul precis în care semnalul de comandă trece de la 0 la 1. Această tranziție fulgerătoare se numește front crescător (sau muchie de ceas).

Semnalul ritmic care urcă și coboară neobosit, oferind tuturor bistabilelor din cip același reper temporal comun, este ceasul. Odată cu el, calculatorul capătă o inimă care pulsează regulat: un „acum” sincronizat în pași limpezi, în care haosul continuu al naturii este disciplinat într-o succesiune ordonată de pași impecabili.

Aceleași date, prinse în două feluri

Urmăriți cele două trasee din desenul de mai sus: zăvorul de sus copiază fidel datele pe toată durata în care semnalul este sus, tremurând la fiecare fluctuație a intrării. În schimb, bistabilul de jos este impasibil: el „fotografiază” intrarea doar în clipa exactă a frontului crescător și ignoră complet orice agitație ulterioară până la următorul tact de ceas.

Registrul

Dacă aliniem opt bistabile și le conectăm pe toate la aceeași linie comună de ceas, obținem un dispozitiv care poate imortaliza un octet întreg la fiecare bătaie de inimă. Acest grup compact poartă numele de registru. Putem schimba semnalele de la intrare cum dorim; octetul păstrat înăuntru nu se va clinti decât în clipa în care sosește frontul de ceas.

Opt bistabile, un singur ceas

Această memorie este volatilă: dacă tăiem alimentarea cu energie, buclele de reacție se sting, iar conținutul se pierde instantaneu. Registrele din miezul procesorului sunt construite exact din asemenea bistabile ultrarapide. În schimb, memoria mare de lucru (RAM) a calculatorului folosește o soluție mai densă și mai economică: fiecare bit este ținut ca o sarcină minusculă într-un condensator microscopic, care trebuie reîmprospătat de sute de ori pe secundă înainte de a se descărca.

Priviți cât de departe am ajuns: avem acum circuite capabile să facă calcule matematice (sumatorul) și circuite capabile să țină minte valorile (registrele), toate coordonate de un ceas care le sincronizează perfect pașii. Între două bătăi succesive de ceas, datele ies dintr-un registru, străbat porțile aritmetice, își schimbă valorile și se așază cuminți la intrarea următorului registru, așteptând următorul impuls pentru a fi înregistrate. În lecția următoare asamblăm toate aceste piese la un loc: ceasul, registrele, sumatorul și o unitate de comandă care hotărăște ce se petrece la fiecare pas. A sosit clipa să construim procesorul.