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

16bitový procesor ve VHDL

  • 1.
  • 2.
    Zadání maturitní práce Cílemprá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ýcharchitektur 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
  • 5.
  • 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 architekturySix ● 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 architekturyLimen ● 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šedotazy Dominik Salvet