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
On Mon, Dec 19, 2016 at 08:54:26PM +0100, Anders Magnusson wrote:
Hejhopp,
jag har (till slut!) ritat och räknat ihop nästan allt för att kunna bygga en CPU :-)
Kul!
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.
Lite tråkigt men förståeligt. Nu får du skriva mer kod själv >:)
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.
Fast det kanske finns bra med mjukvara till RV32I också?
Det motsvarar 214W per register (!). Tur elen är billig.
Jisses! hur står detta sig mot klassiska maskiner? Har du någon uppfattning. Har du sett replikan av EDSAC man byggt på TNMOC? http://www.tnmoc.org/special-projects/edsac
Oj, jättelångt mail. Ha en bra kväll!
Bara kul :) Om någon undrar så har jag en fullt fungerande PDP-8 emulator med stöd för utökat minne och user bit som passerare alla MAINDECs jag kastat på den hitills. Håller som bäst på att porta till Atmega för nästa steg. /P
On Mon, Dec 19, 2016 at 08:54:26PM +0100, Anders Magnusson wrote:
Hejhopp,
jag har (till slut!) ritat och räknat ihop nästan allt för att kunna bygga en CPU :-) Kul!
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. Lite tråkigt men förståeligt. Nu får du skriva mer kod själv >:)
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. Fast det kanske finns bra med mjukvara till RV32I också? Det finns testprogram och sånt för att verifiera arkitekturen, sen så finns ju både Linux och FreeBSD till den, men då förväntar den sig nog att det finns
Den 2016-12-20 kl. 11:34, skrev Pontus Pihlgren: lite mer än bara integer-instruktioner. Men det går ju att få gcc att generera kod för bara RV32I. Nu har jag inte mer än funderat på minneshantering än, det behövs ju också om det skall bli roligt, men det borde vara enkelt att göra nåt om man använder software-TLB :-)
Det motsvarar 214W per register (!). Tur elen är billig. Jisses! hur står detta sig mot klassiska maskiner? Har du någon uppfattning.
Väldigt bra, det verkar bli betydligt mindre än hur det var "på den tiden". Enda problemet är att jag får göra lite sämre anpassade nätdelar eftersom det är för dyrt att göra specialanpassade saker. Även antal rör blir mindre (Besk hade 2400 enligt wikipedia). Jag räknar med att det blir betydligt färre.
Har du sett replikan av EDSAC man byggt på TNMOC?
Jodå, dom sökte ju ingenjörer för ett par år sen med erfarenhet av konstruktion med elektronrör :-)
Oj, jättelångt mail. Ha en bra kväll! Bara kul :)
Om någon undrar så har jag en fullt fungerande PDP-8 emulator med stöd för utökat minne och user bit som passerare alla MAINDECs jag kastat på den hitills. Håller som bäst på att porta till Atmega för nästa steg.
Låter synnerligen trevligt :-) Vi avvaktar kraftfullt! -- R
participants (2)
-
Anders Magnusson
-
Pontus Pihlgren