Hejhopp,
jag har (till slut!) ritat och räknat ihop nästan allt för att kunna
bygga en CPU :-)
Efter att ha grejat med Nova en hel del så insåg jag att
kontroll-logiken blev rätt rörig, trots att arkitekturen i sig är ganska
enkel.
Så jag tänkte att jag tar och skissar på RISCV istället, som verkar vara
en rätt trevlig arkitektur :-)
Och efter lite funderande så verkar det bli en rätt intressant konstruktion.
Det blev en RV32I klockad på 1MHz med 5 cykler per instruktion.
Logiken är 0V för etta, och -20V för nolla. Här klipper man spänningar
utanför det intervallet för att få upp farten.
Internt har den 3 latchdrivna register (PC, IR samt OB). Varje reg har
48 rör (OB har 52) och 210 (!) kristalldioder.
Eventuellt kan man förbättra lite här. Det är en förenklad
"lågenergi-variant" av den som jag skrev om förra gången.
Snabb kalkyl ger strömförbrukningen; +150V 420mA och -100V 270mA för
anoderna, samt 130V 0.3A och 6.3V 13.5A glödspänning.
Det motsvarar 214W per register (!). Tur elen är billig.
ALUn (add, and, or, xor) har 8 rör per bit + 4 output-driv-rör per bit.
Det är i princip addern från BESK eftersom den var rätt elegant i sin
konstruktion samt har snabb ripple-carry. Här är enda orosmomentet
huruvida man kan göra en full addition med worst-case ripple på under
1ns, men med den snygga varianten av 30ns-gatedelay-latchar jag fick
till förut så borde det ordna sig :-)
Registerstacken använder sig av kondensatorminne med refresh av ett word
under varje instruktions-fetch, alltså var femte ns. Det gör att man
får 155ns mellan refresherna, och det borde räcka till för att kunna
hålla 500pf-kondingar laddade även med läckströmmen på kristalldioderna
(teoretiskt, har inte testat än). Jag tänkte skippa använda elektronrör
här.
31 register a' 32 bittar blir 188 rör för avläsning + 62 för att hålla
koll på nästa word att refresha.
Här tänkte jag ha två uppsättningar så att man får ut datat ur två
register samtidigt.
Kontroll-logiken blir mycket enkel, en 5-stegs ringräknare för att hålla
koll på var man är i instruktionen, samt några and-kretsar för att sätta
rätt styrbittar beroende på instruktion. Otroligt mycket enklare än Novan.
Nätdelen för anodspänning (+150) använder sig av 866:or och 6080 som
seriestabbar. -100 har också 866:or och har PL519 som shuntregulator.
Det enda jag inte ritat än är barrel-shiftern, men jag funderar på en
kul variant av triod-gaten som beskrivs för IBM604 om det inte blir för
många rör.
Alternativet här är att skifta i ett register (till exempel OB) men då
trasslar man till kontroll-logiken :-/
Oj, jättelångt mail. Ha en bra kväll!
-- Ragge