On 10/17/2013 01:08 AM, Bjarni Juliusson wrote:
På en x86 skulle det vara typ: 1: lodsb stosb jz 1b
Ovanstående är 4 bytes.
Fast varken lods eller stos sätter väl flaggorna? Det var en till av sakerna forskningen visade: sätta flaggor är bra, sparar testinstruktioner.
Möjligt, jag kollade inte upp det och talar inte x86-assembler flytande :-)
En liknande, mycket praktisk sak som 68000 har specialinstruktion för är dekrementera+testa+hoppa, vilket ju är nåt man gör jätteofta, så där lönar det sig nog.
Jo, och vax har ett gäng såna också som kan vara mer eller mindre bra ibland :-) sobgeq/sobgtr/aobleq/aoblss - sub/add one and branch if less than or equal (heltal) acb - add, compare and branch nåt till ett tal av valfritt format
Hm, det där är faktiskt rätt bra att ha i bakhuvudet. VAXen liksom Alphan har 16 register, men MIPSen har ju 32. Det är alltså onödigt många då...
Ja, och jag har en känsla av att jag har hört det förr: om registren är general-purpose så räcker 8 för det mesta, och 16 räcker så gott som alltid. MIPS16 har 8 GPR plus 2 specialregister (stackpekare, returadress), THUMB drar ner ARMs 16 register till 8.
Hm, pdp11 har 7 gpreg + pc, och där har man alltid ont om register. Föralldel kommer ett moment till in här: när man har tal som sträcker sig över flera register, då så har man ju i princip bara hälften. Vanligt på x86 också när man emulerar 64-bitarstal.
Tänkte du köra Williamsminne för registren?
Ja, det ser ut så, förutom ackumulatorn. Jag inriktar mig mycket på minimalistisk hårdvara, för jag vet att jag aldrig kommer att orka bygga 16 register i flip-floppar, för det är jättetråkigt. Dessutom kostar det extra pengar som jag inte har, och tar en massa plats. Så efter att ha tittat på olika minnestekniker så bestämde jag mig för att pröva att bygga ett Williamsminne; dels för att antalet komponenter är väldigt litet, dels för att jag har ett lagom litet oscilloskoprör som bara ligger och skräpar, komplett med nätdelar, dels därför att det är så djävla roligt, dels för att det verkar görbart och inte är beroende på att man kan få tag på udda komponenter eller lyckas konstruera mekaniska delar, och dels för att liksom fira 1900-talet! Få saker är så bra representanter för 1900-talsteknologi som Williamsminne. :)
Om det går bra bygger jag kanske ett större Williamsminne som primärminne. Har ett betydligt större rör liggande från en vektordisplay, det borde vara elektrostatisk avlänkning i det.
Hm, hur skall du göra för att känna av förändringen av en bit? Klistra aluminiumfolie på framsidan röret, eller? :-) Jag tycker det verkar som en utmaning med ett sånt minne.
Själv har jag snöat in på kondensatorminnen för register. Jag tror det kan bli rätt bra :-) Det gäller bara att få till nåt bra refreshsystem, jag är inte helt klar med det än.
Det ska bli skoj att se!
Jag tror det kan bli riktigt bra faktiskt. Dessutom så tror jag det går att göra en bra cache med sånt minne också :-) Det är dock två saker som jag inte är klar på riktigt än, det blir nog empiriska tester för det: 1) Kondensatorernas kapacitanser och dess påverkan. Alltså hur mycket läcker en konding och hur ofta behöver man refresha för ett visst värde. 2) Diodtyp att använda. Finns det för mycket läckströmmar i halvledare så att man måste ha EAA91 istället?
Dessutom tror jag att jag har en bra ide hur man bygger latchar för pipelinesteg. För att kunna använda kombinatoriken under hela klockcykeln har man två flipflops, en ut och en in, som togglas emellan varje steg. För varje pipelinebit går det åt 3 ECC91, 2 EAA91, 2 EH90 och en 6AN6 (quad diode). Men jag är inte helt klar än, ritningar kommer snart :-)
Även det ser jag fram emot! Jag också :-) Måste vinterställa husvagnen först bara så finns det lite byggtid sedan...
-- R