SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
Dominik Salvet
16bitový procesor ve VHDL
Zadání maturitní práce
Cílem práce je návrh 16bitového procesoru vlastní
architektury a konstrukce a jeho následný popis v jazyce
VHDL, tak aby ho bylo možno implementovat do
hradlového pole.
Časová osa navržených architektur
2014 2015 2016 ?
?
Cycle
Limen
●
Alpha
●
Beta*
Six
●
Alpha
●
Beta*
Cycle - charakteristika
●
procesor, spíše mikrokontrolér, této architektury byl
implementovám pouze v populární hře Minecraft, a to
přímo za pomocí herních mechanizmů bez doplňků
●
8bitová CISC/Von Neumannová architektura řízena
řídícími signály (nikoli hodinovým signálem)
●
3 registry volného použití (nikoli však obecného)
●
paměť adresuje po 16 bitech, adresuje tak až 512B paměti
●
4 V/V porty, ke kterým se přistupuje skrze speciální
instrukce
●
vzhledem k vykonávané instrukci má pomyslný výkon
zhruba 1 instrukci za 5 sekund
Cycle computer - ukázka
Six Alpha - charakteristika
●
4bitová RISC/Harvardská architektura
●
jeden hlavní registr - akumulátor
●
2 náběžné hrany vstupního hodinového signálu = 1 vykonaná instrukce
●
paměť programu i dat je součástí architektury, čili jedná se spíše o architekturu
mikrokontroléru
●
pro Xilinx Spartan 3E dosahuje takt zhruba 74MHz, čili má výkon 37MIPS (Milión
Instrukcí za Sekundu)
Paměť programu
●
adresuje se po bytu, naadresuje až 128B paměti
Paměť dat
●
adresuje se po nibblu (4bity), naadresuje maximálně 16B paměti
●
V/V porty jsou v adresním prostoru dat
Six Alpha - schéma
A
ALU
RWM
PRG
MEM
IP
I/O interface
SCR
Limen Alpha - charakteristika
●
16bitová RISC/Von Neumannová architektura
●
8 registrů obecného použití (R0 je vždy roven nule)
●
adresuje paměť po dvojici bytu, adresuje maximálně
128kB paměti
●
jedna instrukce je dokončena každé 4 náběžné hrany
vstupního hodinového signálu
●
nynější verze Alpha pro Xilinx Spartan 3E dosahuje taktu
zhruba 66MHz, výkon je tedy roven 16.5MIPS
Limen Alpha - výčet instrukcí
●
ST - uložit
●
LD - načíst
●
ADD - sečíst
●
SL - nastavit menší
●
SLU - nastavit menší (bez znaménka)
●
OR - log. disjunkce
●
NOR - negace log. disjunkce
●
AND - log. konjunkce
●
NAND - negace log. konjunkce
●
XOR - exklusivní log. disjunkce
●
SLL - log. bit. posun vlevo
●
SRL - log. bit. posun vpravo
●
SRA - arit. bit. posun vpravo
●
SUB - odečíst
●
LI - načíst 8 bitů
●
LIS - načíst 8 bitu bit. posunutých
●
LIL - načíst spodních 8 bitů
●
LIH - načíst vrchních 8 bitů
●
JNE - skoč, pokud není rovno
●
JE - skoč, pokud je rovno
●
JL - skoč, pokud je menší
●
JLE - skoč, pokud je menší/rovno
●
JG - skoč pokud je větší
●
JGE - skoč, pokud je větší/rovno
●
JWL - skoč s odkazem
Limen Alpha - instrukční formáty
Limen Alpha - zpracování instrukcí
Limen Alpha - schéma jádra
ALU
Register file
IP
Control
registers
SE
IR
Bus
interface
CT
0x0004
AR
IIP
Rx
Ry
Rz
Limen Alpha - praktická ukázka
●
jádro Limen Alpha je zabaleno do “testovacího systému”
pro názornou ukázku jeho běhu
●
sedmisegmentový displej zobrazuje obsah IP registru
(instrukčního ukazatele) v hexadecimální soustavě, tj.
adresa aktuálně zpracovávané instrukce
●
tlačítko BTN0 je navedeno na signál restartu procesoru
●
tlačítko BTN1 je navedeno na signál přerušení procesoru
●
vstupní hodinový signál do testovacího systému je 25MHz,
kde je skrze děličku kmitočtu přiveden do jádra procesoru
s frekvencí 4Hz (tj. 1 instrukce za sekundu)
Budoucnost vývoje architektury Six
●
Alpha
– hotovo
●
Beta
– binární kompatibilita s architekturou Six Alpha
– změnit způsob přístupu k portům
– paměti dat a programu mimo jádro
– zvažuje se vylepšení celého jádra
Budoucnost vývoje architektury Limen
●
Alpha
– navrhnout dvoustupňový pipelining ALU
– dodělat dvoujádrovou variantu (základy již položeny)
=> dohromady je navýšení výkonu odhadováno na čtyřnásobek,
čili zhruba na 66MIPS (33MIPS / jádro)
●
Beta
– dodělat jádro architektury Limen se 6-ti stupňovým pipeliningem,
binárně kompatibilní s jádrem Limen Alpha (první testy ukazují
výkon jednoho jádra až 100MIPS)
– zvažuje se zavedení jednoduché ochrany paměti pro snadnou
implementaci jednoúlohového operačního systému s ochranou
jeho adresního prostoru
Limen Beta - schéma
OB
OT
AR
ALU
RF
RY
RX
CT JA
RX
SE
IR
BI_ACS
BI_FES
IP
+
1
IP
Address Fetch Decode Compute Route Access
AR
Představení architektury Tine
●
Alpha
– jednoduchost a ortogonalita bude klíčem celé architektury
– 8bitová RISC/Vonn Neumannova architektura
– paměť se bude adresovat po bytu, bude tak moci adresovat
až 256B paměti
●
Beta
– první pokus o asynchronně řízenou architekturu procesoru
– logicky shodná s Tine Alpha, pouze předělaná do
asynchronní podoby (tzn. nepotřebuje hodinový signál na
řízení provozu a synchronizaci jednotlivých částí procesoru)
Představení architektury Elys
●
není zatím konkrétně rozčleněna na verze a celý návrh prochází mnoha
úpravami čistě teoretického rázu, nicméně toto jsou nynější předpoklady:
– bude se jednat o 64bitovou RISC/Von Neumannovou architekturu
– šířka instrukčního slova bude 32 bitů
– základní sada obecných registrů bude čítat počtu 64, z nichž vrchních
32 bude vyhrazeno pro kernel mód (tj. pro rutiny v jádře operačního
systému)
– pro jednoduchost a rychlost se bude paměť adresovat po 32 a 64
bitech (někdo tu laťku někdy posunout musí)
– architektura bude podporovat pouze naprosto triviální instrukce, které
budou na úrovni hardwaru co nejvíce paralelizovány a optimalizovány
– zvažuje se dokonce absence instrukcí pro násobení a dělení (neplatí
pro FPU), které se dají softwarově nahradit s vcelku slušnou
výpočetní složitostí (ovšem stále jsou v průměru zhruba 3x pomalejší
než hardwarové instrukce na dnešních univerzálních CPU)
Prostor pro Vaše dotazy
Dominik Salvet

Weitere ähnliche Inhalte

Mehr von Dominik Salvet

Mehr von Dominik Salvet (8)

Proč používat GitHub?
Proč používat GitHub?Proč používat GitHub?
Proč používat GitHub?
 
Návrh modelu procesoru
Návrh modelu procesoruNávrh modelu procesoru
Návrh modelu procesoru
 
Installing Software from Source
Installing Software from SourceInstalling Software from Source
Installing Software from Source
 
From Head to Binary
From Head to BinaryFrom Head to Binary
From Head to Binary
 
Processor Organization
Processor OrganizationProcessor Organization
Processor Organization
 
VHDL Building
VHDL BuildingVHDL Building
VHDL Building
 
What Is a Processor
What Is a ProcessorWhat Is a Processor
What Is a Processor
 
Limen Alpha Processor
Limen Alpha ProcessorLimen Alpha Processor
Limen Alpha Processor
 

16bitový procesor ve VHDL

  • 2. Zadání maturitní práce Cílem práce je návrh 16bitového procesoru vlastní architektury a konstrukce a jeho následný popis v jazyce VHDL, tak aby ho bylo možno implementovat do hradlového pole.
  • 3. Časová osa navržených architektur 2014 2015 2016 ? ? Cycle Limen ● Alpha ● Beta* Six ● Alpha ● Beta*
  • 4. Cycle - charakteristika ● procesor, spíše mikrokontrolér, této architektury byl implementovám pouze v populární hře Minecraft, a to přímo za pomocí herních mechanizmů bez doplňků ● 8bitová CISC/Von Neumannová architektura řízena řídícími signály (nikoli hodinovým signálem) ● 3 registry volného použití (nikoli však obecného) ● paměť adresuje po 16 bitech, adresuje tak až 512B paměti ● 4 V/V porty, ke kterým se přistupuje skrze speciální instrukce ● vzhledem k vykonávané instrukci má pomyslný výkon zhruba 1 instrukci za 5 sekund
  • 6. Six Alpha - charakteristika ● 4bitová RISC/Harvardská architektura ● jeden hlavní registr - akumulátor ● 2 náběžné hrany vstupního hodinového signálu = 1 vykonaná instrukce ● paměť programu i dat je součástí architektury, čili jedná se spíše o architekturu mikrokontroléru ● pro Xilinx Spartan 3E dosahuje takt zhruba 74MHz, čili má výkon 37MIPS (Milión Instrukcí za Sekundu) Paměť programu ● adresuje se po bytu, naadresuje až 128B paměti Paměť dat ● adresuje se po nibblu (4bity), naadresuje maximálně 16B paměti ● V/V porty jsou v adresním prostoru dat
  • 7. Six Alpha - schéma A ALU RWM PRG MEM IP I/O interface SCR
  • 8. Limen Alpha - charakteristika ● 16bitová RISC/Von Neumannová architektura ● 8 registrů obecného použití (R0 je vždy roven nule) ● adresuje paměť po dvojici bytu, adresuje maximálně 128kB paměti ● jedna instrukce je dokončena každé 4 náběžné hrany vstupního hodinového signálu ● nynější verze Alpha pro Xilinx Spartan 3E dosahuje taktu zhruba 66MHz, výkon je tedy roven 16.5MIPS
  • 9. Limen Alpha - výčet instrukcí ● ST - uložit ● LD - načíst ● ADD - sečíst ● SL - nastavit menší ● SLU - nastavit menší (bez znaménka) ● OR - log. disjunkce ● NOR - negace log. disjunkce ● AND - log. konjunkce ● NAND - negace log. konjunkce ● XOR - exklusivní log. disjunkce ● SLL - log. bit. posun vlevo ● SRL - log. bit. posun vpravo ● SRA - arit. bit. posun vpravo ● SUB - odečíst ● LI - načíst 8 bitů ● LIS - načíst 8 bitu bit. posunutých ● LIL - načíst spodních 8 bitů ● LIH - načíst vrchních 8 bitů ● JNE - skoč, pokud není rovno ● JE - skoč, pokud je rovno ● JL - skoč, pokud je menší ● JLE - skoč, pokud je menší/rovno ● JG - skoč pokud je větší ● JGE - skoč, pokud je větší/rovno ● JWL - skoč s odkazem
  • 10. Limen Alpha - instrukční formáty
  • 11. Limen Alpha - zpracování instrukcí
  • 12. Limen Alpha - schéma jádra ALU Register file IP Control registers SE IR Bus interface CT 0x0004 AR IIP Rx Ry Rz
  • 13. Limen Alpha - praktická ukázka ● jádro Limen Alpha je zabaleno do “testovacího systému” pro názornou ukázku jeho běhu ● sedmisegmentový displej zobrazuje obsah IP registru (instrukčního ukazatele) v hexadecimální soustavě, tj. adresa aktuálně zpracovávané instrukce ● tlačítko BTN0 je navedeno na signál restartu procesoru ● tlačítko BTN1 je navedeno na signál přerušení procesoru ● vstupní hodinový signál do testovacího systému je 25MHz, kde je skrze děličku kmitočtu přiveden do jádra procesoru s frekvencí 4Hz (tj. 1 instrukce za sekundu)
  • 14. Budoucnost vývoje architektury Six ● Alpha – hotovo ● Beta – binární kompatibilita s architekturou Six Alpha – změnit způsob přístupu k portům – paměti dat a programu mimo jádro – zvažuje se vylepšení celého jádra
  • 15. Budoucnost vývoje architektury Limen ● Alpha – navrhnout dvoustupňový pipelining ALU – dodělat dvoujádrovou variantu (základy již položeny) => dohromady je navýšení výkonu odhadováno na čtyřnásobek, čili zhruba na 66MIPS (33MIPS / jádro) ● Beta – dodělat jádro architektury Limen se 6-ti stupňovým pipeliningem, binárně kompatibilní s jádrem Limen Alpha (první testy ukazují výkon jednoho jádra až 100MIPS) – zvažuje se zavedení jednoduché ochrany paměti pro snadnou implementaci jednoúlohového operačního systému s ochranou jeho adresního prostoru
  • 16. Limen Beta - schéma OB OT AR ALU RF RY RX CT JA RX SE IR BI_ACS BI_FES IP + 1 IP Address Fetch Decode Compute Route Access AR
  • 17. Představení architektury Tine ● Alpha – jednoduchost a ortogonalita bude klíčem celé architektury – 8bitová RISC/Vonn Neumannova architektura – paměť se bude adresovat po bytu, bude tak moci adresovat až 256B paměti ● Beta – první pokus o asynchronně řízenou architekturu procesoru – logicky shodná s Tine Alpha, pouze předělaná do asynchronní podoby (tzn. nepotřebuje hodinový signál na řízení provozu a synchronizaci jednotlivých částí procesoru)
  • 18. Představení architektury Elys ● není zatím konkrétně rozčleněna na verze a celý návrh prochází mnoha úpravami čistě teoretického rázu, nicméně toto jsou nynější předpoklady: – bude se jednat o 64bitovou RISC/Von Neumannovou architekturu – šířka instrukčního slova bude 32 bitů – základní sada obecných registrů bude čítat počtu 64, z nichž vrchních 32 bude vyhrazeno pro kernel mód (tj. pro rutiny v jádře operačního systému) – pro jednoduchost a rychlost se bude paměť adresovat po 32 a 64 bitech (někdo tu laťku někdy posunout musí) – architektura bude podporovat pouze naprosto triviální instrukce, které budou na úrovni hardwaru co nejvíce paralelizovány a optimalizovány – zvažuje se dokonce absence instrukcí pro násobení a dělení (neplatí pro FPU), které se dají softwarově nahradit s vcelku slušnou výpočetní složitostí (ovšem stále jsou v průměru zhruba 3x pomalejší než hardwarové instrukce na dnešních univerzálních CPU)
  • 19. Prostor pro Vaše dotazy Dominik Salvet