Matematika brzine: Zašto registri pobeđuju varijable u memoriji na Intel 8051

Uvod i teorija
U prve dve epizode rešili smo stambenu krizu u RAM-u i prošli kroz anatomiju PSW registra. Međutim, prava magija optimizacije i razlog zašto smo toliko pažnje posvetili bankama registara leži u brzini izvršavanja instrukcija. Na 8-bitnim sistemima, lokacija na kojoj čuvate podatke tokom proračuna direktno diktira koliko će taktova kvarcnog oscilatora procesor potrošiti.
Fizičko pravilo arhitekture Intel 8051 je prosto: rad direktno unutar registara je duplo brži od rada sa varijablama u memoriji.
Jedan mašinski ciklus (Machine Cycle) na bazičnom 8051 procesoru traje tačno 12 taktova (oscilacija) kvarcnog oscilatora. Kada procesor izvršava operaciju nad registrom (npr. R0 ili Akumulator A), ALU (aritmetičko-logička jedinica) ima direktan hardverski pristup podacima. Instrukcija zauzima samo 1 bajt u ROM-u i završava se u roku od 1 mašinskog ciklusa (12 oscilacija).
Sa druge strane, kada podatke držite u varijablama unutar opšteg RAM-a, procesor mora da prođe kroz složeniji postupak. Instrukcija sada zauzima 2 bajta u ROM-u (kod instrukcije + adresa varijable). U prvom ciklusu procesor čita samu instrukciju i adresu, a u drugom ciklusu memorijski kontroler tek odlazi do RAM-a, uzima podatak i donosi ga na obradu. Rezultat? Potrošena su 2 mašinska ciklusa (24 oscilacije). Vreme je duplirano.
Još gora situacija nastaje kada izađemo u spoljnu memoriju (XDATA). Tamo instrukcije (poput MOVX) troše još više ciklusa zbog spore komunikacije preko spoljnih hardverskih linija. Zato vrhunska optimizacija nalaže: držite sve aktivne proračune isključivo u registrima R0–R7, a u memoriju upisujte tek konačan rezultat.

Vremenski dijagram (Poređenje clock oscilacija - potrošnju taktova kvarca za istu operaciju sabiranja)

RAD SA REGISTROM (ADD A, R0)
[Ciklus 1: Citanje i izvrsavanje odjednom]
Taktovi: 1 2 3 4 5 6 7 8 9 10 11 12 ---> UKUPNO: 12 oscilacija (KRAJ)

RAD SA VARIJABLOM U RAM-U (ADD A, 30H)
              [Ciklus 1: Citanje adrese] [Ciklus 2: Pristup RAM-u i sabiranje]
Taktovi: 1 2 3 4 5 6 7 8 9 10 11 12 | 13 14 15 16 17 18 19 20 21 22 23 24 ---> UKUPNO: 24 oscilacije (KRAJ)

Praktični deo

U ovom delu upoređujemo dve identične logičke operacije. Prva koristi varijablu u memoriji na adresi 30H, dok druga koristi isključivo radne registre. Obratite pažnju na komentare o potrošnji mašinskih ciklusa:
; =====================================================================
; EPISODA 3: POREDJENJE BRZINE - REGISTRI PROTIV MEMORIJE
; =====================================================================

ORG 0000H
LJMP START

ORG 0030H
START:
    ; Priprema steka i test podataka
    MOV SP, #2FH
    MOV 30H, #05H    ; Varijabla na RAM adresi 30H ima vrednost 5
    MOV R0, #05H      ; Registar R0 takodje ima vrednost 5
    MOV A, #10H        ; U Akumulator stavljamo pocetnih 16 (10H)
 
    ; --- SPORIJI PRISTUP: Rad sa varijablom u memoriji ---
    ADD A, 30H       ; Saberi A sa sadrzajem adrese 30H
                              ; [Zauzima 2 bajta u ROM-u, trose se 2 masinska ciklusa / 24 takta!]

    ; --- BRZI PRISTUP: Rad direktno unutar registra ---
    ADD A, R0        ; Saberi A sa sadrzajem registra R0
                             ; [Zauzima samo 1 bajt u ROM-u, trosi se 1 masinski ciklus / 12 taktova!]

    SJMP $           ; Bezbedno parkiranje procesora
END

O projektu: Diskusija koja prerasta u knjigu
Ovaj serijal blog postova predstavlja destilovanu inženjersku diskusiju između autora (inženjera) i veštačke inteligencije (AI Gemini) oko najsitnijih detalja arhitekture 8051. Cilj nam je da kroz kratke, praktične dijaloge skinemo veo apstrakcije sa 8-bitnih sistema. Svi tekstovi i analize koji ovde nastaju biće pretočeni i spakovani u jedinstvenu PDF knjigu za besplatno preuzimanje na našem portalu, pod radnim naslovom "Intel 8051 disasembliran od strane AI i inženjera".

📦 Open Source & Licenciranje: Sadržaj je licenciran pod CC BY 4.0, dok je izvorni kod pod MIT licencom. Detalji o licencama su dostupni na zilsel-invent.com.

Autor: Vladimir Savić / AI Gemini
Povezani članci:

Comments

Popular posts from this blog

Fake VC830L digital multimeter

Electrolytic capacitors and design rules

How to design LM324 Astable Multivibrator