Hej,
Jag sitter och pillar lite med VHDL och soft cores. Undrar ifall det finns någon fördel med von neumann mot harvard arketektur?
För er som inte vet så är von neumann då man endast har en minnes buss och ett minne medans harvard så har man två bussar. En för data och en för kod.
von neumann fördel mot harvard arketektur
-
- Inlägg: 49
- Blev medlem: 10 november 2008, 13:43:25
- Ort: Göteborg
- Kontakt:
Titta på instruktionssetet för att se fördelarna. von Neumann har i allmänhet ett mycket rikare instruktionsset eftersom det är mera flexibelt med variabel längd. Troligen finns en stack med bra djup och möjlighet att spara dataregister. Dessutom kan man trixa mycket mera, allt från att lägga parametrar till subrutiner som immediate data till självmodifierande kod.
Skall Du använda s.k. högnivåspråk till koden som Din softcore skall exekvera så märker Du inget av dessa saker. Försök då hitta jämförelser på vilken softcore som är snabbast i det språk Du tänker använda och helst på just den FPGA Du valt och för den typ av applikation Du skall göra.
Skall Du använda assembler så välj en softcore där Du känner att Du behärskar instruktionssetet, det ger nog bäst resultat allt sammantaget.
Skall Du använda s.k. högnivåspråk till koden som Din softcore skall exekvera så märker Du inget av dessa saker. Försök då hitta jämförelser på vilken softcore som är snabbast i det språk Du tänker använda och helst på just den FPGA Du valt och för den typ av applikation Du skall göra.
Skall Du använda assembler så välj en softcore där Du känner att Du behärskar instruktionssetet, det ger nog bäst resultat allt sammantaget.
Jepp, som speakman skriver finns det kompilere som gör så. Jag fick allvarliga problem av den anledning i ett projekt med många texter på 7 olika språk, det visade det sig att alla 4-bytes pointers till dessa strängar kopierades till RAM vilket ju självklart fick kompilern till att vägra kompilera då minne inte kunde allokeras...
Jag fick då skriva alla texter i ASM för att få det att hänga ihop och plötsligt fungerade allt igen.
Varje arkitektur har ju sina fördelar, har man en del fast text och en del variabel ser jag fördelar vid von Neumann.
Jag fick då skriva alla texter i ASM för att få det att hänga ihop och plötsligt fungerade allt igen.
Varje arkitektur har ju sina fördelar, har man en del fast text och en del variabel ser jag fördelar vid von Neumann.
von neumann är oftast svårare att få till i en softcore, du kommer att behöva extra pipeline steg, cache coherence och wait-states och annat tråkigt. Därför är nästan alla mindre softcores harvard.
Man kan undvika pekare-problem genom att deklarera konstanter med "const", eller platformberoende GCC-ord som den här:
http://www.nongnu.org/avr-libc/user-man ... space.html
Man kan undvika pekare-problem genom att deklarera konstanter med "const", eller platformberoende GCC-ord som den här:
http://www.nongnu.org/avr-libc/user-man ... space.html