On 09/16/2013 10:09 PM, Anders Magnusson wrote:
En stor fet CISC känns inte så lockande att bygga med rör. Stackmaskiner har jag skissat på förut, men den här gången blir det inte en sådan.
Åhå, du menar så. Jag tänkte på att minimera kontrollogiken maximalt.
Oj, hah. Jag tänkte nog på båda två! :D
Jag har funderat en del på att man skulle göra nåt enkelt med mikrokod men insåg att det blir nästa generation av CPU isåfall :-) Till att börja med handlar det om att få till nåt alls :-)
Jag kommer att köra med mikrokod är jag rätt säker på. Delvis för att få upp koddensiteten, och delvis för att få en dräglig dator att programmera assembler på. Inte särskilt komplexa instruktioner dock.
Skulle vara intressant att läsa nån detaljerad studie av koddensitet som jämför olika arkitekturer. Undrar om det finns nånstans...
Jag har sett nåt sånt för länge sen där man jämförde lite olika med VAX som referens, och sen kollade hur mycket större alla andra arkitekturer blev. Google kan nog vara din vän här :-)
Jag hittade och läste den här: http://www.researchgate.net/publication/224114307_Code_density_concerns_for_... De jämför handoptimerad assemblerkod på 21 olika arkitekturer och visar lite grann vilka egenskaper hos arkitekturerna som förbättrar och försämrar koddensiteten. Tyvärr finns varken PDP-8 eller Nova med, och de har klumpat ihop PDP-11 tillsammans med 6502 och Z80 som "8/16-bit", bah. De hade gott kunnat klumpa ihop PDP-11 med 68k tycker jag. Nåja, det var rätt kul läsning i alla fall. VAX är med, och de vanliga RISCarna, och x86 och Itanium och ARM och AVR med flera. Variabel instruktionslängd med väldigt korta instruktionskodningar för vanliga operationer var mest effektivt. Sen fanns autoinkrementerande adressering, kortare instruktioner för små immediate-konstanter, divisionsinstruktioner (bra för inläsning/utskrifter av tal), samt få explicita operander per instruktion med i listan. Min arkitektur har 6-bitars instruktioner, däribland laddning av 5-bitars konstanter, två separata instruktionsklasser för instruktioner med flexibla operander respektive implicita operander, valfri specifikation av operander med hjälp av separata opkoder innan en instruktion, implicit ackumulator, och autoinkrementerande adressering. Nu sitter jag och funderar på hur jag kan implementera division i mikrokod. :) :)
Skulle behöva rör med separata katoder också, för katodföljare. Har några, vet inte hur många jag kommer att behöva. Det blir rör i noval- eller oktalsockel i sådana fall. Jag kan hålla ögonen öppna, det lär behövas några såna för mig också :-)
Japp. Jag har lite ECC83 och ECC803 med mera. Inte så många dock, och det skulle vara trevligt med en massa likadana rör.
Jag har börjat rita lite på ALU:n också, och den käkar logik kan man säga. Men, det verkar som man kan göra en smart lösning med dioder för att emulera en mux, där man driver alla utgångar högt med en effektpentod utom den man vill ha resultatet för. Har inte riktigt sanitycheckat det här än, men det "borde" gå :-)
Har du grejer så du kan labba lite med kretslösningar? Bjarni