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".
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
Post a Comment