Maskinkod mikroprocessor!

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
Platis
Inlägg: 2464
Blev medlem: 24 november 2009, 20:19:28
Ort: Ljungby

Maskinkod mikroprocessor!

Inlägg av Platis »

Måste erkänna att man bara är en glad amatör när det gäller elektronik! :) Men genom åren så har man ju ändå råkat plöja igenom(läs; ögnat igenom) en viss mängd litteratur på området! En sak som slår mej efter ett antal böcker om diverse cpu's(z80,6502) är att man aldrig får en riktig förklaring hur maskinkod översätts till verkligt arbete internt i cpu'n. Man får detaljerade beskrivningar om ALU, register, flaggor, stackar osv fungerar och i nästa steg så får man veta maskinkod, mnemonics för assembler m.m. Men antagligen så har jag läst fel böcker(el har jag sovit igenom just det kapitlet) för ingen tar upp hur dom olika maskinkoderna kodas internt i cpu'n! Förutom att det är maskprogrammerat av tillverkaren, vilket inte säger så mycket om hur det går till! Logiskt så måste det ju finnas nån minnesbank el nån typ av grind som avkodar instruktionerna!? :roll: Eller?
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Maskinkod mikroprocessor!

Inlägg av sodjan »

Ja, det är normalt en mer eller mindre komplex uppsättning av vanliga
logiska element som avkodar det hela och ser till att rätt saker
händer i processorn. Normalt så är inte heller intstruktionerna
valda slumpmässigt, utan det är mindre delar som styr mellan
huvudoperationerna. Andra delar innehåller register-nr eller
adresseringsmetod o.s.v.
Användarvisningsbild
psynoise
EF Sponsor
Inlägg: 7226
Blev medlem: 26 juni 2003, 19:23:36
Ort: Landvetter

Re: Maskinkod mikroprocessor!

Inlägg av psynoise »

Det är inte särskilt komplicerat. Från början använde nog de flesta datorer grindnät för att översätta instruktionerna till kontrollsignaler som styr datorns olika delar. Senare blev ROM billigt vilket kunde ta över den uppgiften. Idag är allt integrerat och hur det brukar gå till kan jag tyvärr inte säga.

Detta fick jag lära mig en introduktions kurs för digitalteknik där en av kursens uppgifter var just att konstruera grindnät för dessa kontroll signaler. Dock var det många år sedan nu och i vilken litteratur det kan tänkas stå något kommer jag tyvärr inte på.
Användarvisningsbild
Platis
Inlägg: 2464
Blev medlem: 24 november 2009, 20:19:28
Ort: Ljungby

Re: Maskinkod mikroprocessor!

Inlägg av Platis »

Vad är mikrokod?
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Maskinkod mikroprocessor!

Inlägg av vfr »

En form av "mikroprogram" som ligger i processorn och tolkar instruktionerna.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46928
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Maskinkod mikroprocessor!

Inlägg av TomasL »

Markesjö skrev en bok för en bunt år sedan, (-75) eller så, där han dissekerade en ALPHA LSI (Även kallad Naked Mini) minidator, och gick igenom allt, inklusive microavkodningen rätt detaljerat.
Vet inte om du kan få tag på den nu, men den är rätt lärorik.

Tror det det är denna
http://libris.kb.se/bib/7276339
Användarvisningsbild
Platis
Inlägg: 2464
Blev medlem: 24 november 2009, 20:19:28
Ort: Ljungby

Re: Maskinkod mikroprocessor!

Inlägg av Platis »

Intressant! Ska hålla utkik efter denna bok! :)
Ang mikrokod; ersätter mikrokod maskprogrammerade instuktioner i vissa processorer, eller är det typ nåt komplement till dom redan existerande? :?:
Ber om ursäkt för dumma frågor, men är man novis så är man! :wink:
Användarvisningsbild
Icecap
Inlägg: 26630
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Maskinkod mikroprocessor!

Inlägg av Icecap »

Under min utbildning lärde jag om en 16 bit dator som användes som buffer/översättare för en 18 bitars mainframe.

Vi fick genomgått mikrokoden och det var i grunden bara en sekvensstyrning av de element som finns i enheten.

Det behövs en ALU, i detta fall var det 4 st 4-bit ALU-slice som var gjorda för att kunde seriekopplas.
Sedan fanns det statusregister som kunde latcha status när det blev aktiverat av sekvensen.
Det fanns ett par register med fasta värden i: -1 och +1.

Sedan var mikrokoden mest en fråga om att sitta "manuellt" och uppfinna instruktioner och vilka funktioner de skulle ha i hårdvaran. Dessa sekvenser blev sedan lagt in i ett PROM (gamla grejer) och varje instruktion utlösta sedan en uppspelning av dessa sekvensen mikrokod.

I grunden är det ytterst ointressant att tråckla i dessa mikrokoder, det viktiga är instruktionerna och deras samarbete men låt oss ta en enkel funktion som exempel:
Decrement A

Följande steg ska utföras:
1: Ackumulatorn ska koppplas till ena ingången av ALU'n.
2: Registret med -1 ska kopplas till andra ingången av ALU'n. Vid Increment A är det +1 som används.
3: En addition ska exekveras.
4: Resultatet ska latchas in i Ackumulatorn.

Mikrokoden är då i grunden bara att se som ett antal brytare som aktiverar funktionerna precis som piggarna på en speldosa slår av de olika tonerna, det är alltså ingen intelligens som sådan, det rör sig om en sekvens som spelas upp.

Numera har de flesta moderna µC en pipeline som gör detta i steg vilket betyder att de effektivt sett kan utföra en instruktion varje klock-cykel medan att de i verkligheten behöver ett antal för att utföra dom - men att de förbereds.

Tar man de uråldriga 8031 behöver de 12 klockpulser för varje instruktion de utför, just för att hinna igenom alla stegen.
DanG
Inlägg: 151
Blev medlem: 30 januari 2013, 10:22:32

Re: Maskinkod mikroprocessor!

Inlägg av DanG »

Edit: Ser att ICECAP har berättat om vedermödorna på ett utmärkt sätt. Som sagt, man lärde sig en hel del, speciellt om CPU etc. var virade och därmed lämpliga för ombyggnad/förbättringar.

Åhhh, härliga forntid ... :D

Vill Du veta mer, så rekommenderar jag nedanstående länk.
http://en.wikipedia.org/wiki/AMD_Am2900
Flera "stora" datorer byggde på denna kretsfamilj, till vilken man sedan lade diverse diskret logik för att få assemblerinstruktionerna att fungera som avsett.
Detta tog en hel del plats, MODCOMPs CPUer, som jag jobbat mest med, bestod av 1-2 virade s.k. plan.
Se sid 6 på http://www.ddp116.org/modcomp/modcomp.pdf

Det roliga med dessa system var att man lärde sig mycket.

M.v.h DanG
Senast redigerad av DanG 6 januari 2014, 15:36:43, redigerad totalt 1 gång.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46928
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Maskinkod mikroprocessor!

Inlägg av TomasL »

Platis skrev:Intressant! Ska hålla utkik efter denna bok! :)
Ang mikrokod; ersätter mikrokod maskprogrammerade instuktioner i vissa processorer, eller är det typ nåt komplement till dom redan existerande? :?:
Ber om ursäkt för dumma frågor, men är man novis så är man! :wink:
Inga dumma frågor, eftersom det mesta av det här är bortglömt i dag, det var någon som sa att "i dag saknar vi den tekniska kompetensen att flyga någon till månen".

Nja mikrokod är väl ett steg emellan assemblern/OP-koderna och den egentliga instruktionsavkodningen.
Har för mig att från och med till exempel Pentium så översätts x86-assemblern till microkod i processorn, vilken sedan avkodas så processorn gör vad den skall.

Skillnaden är att i processorer som saknar microkod, är maskinkoden direkt implementerad i hårdvaran, dvs de olika bitarna i OP-koden påverkar hårdvaran direkt.
I en Pentium till exempel så påverkar maskinkoden inte hårdvaran direkt utan översätts till en serie mikroinstruktioner, vilka påverkar hårdvaran direkt.
på så sätt kan man emulera vilken intstruktionsuppsättning som helst, med samma hårdvara, utan att ändra hårdvara, så, i alla fall i teorin kan man med rätt microkod köra PPC-kod i en Pentium, typ.
Nu är det väl iofs ingen som tillverkat en sådan Pentiumprocessor, men det är fullt möjligt.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Maskinkod mikroprocessor!

Inlägg av blueint »

Med direkt avkodning finns ju också möjligheten till "olovliga instruktioner" som kan åstadkomma mycket kalabalik internt i processorn. 68000 hade väl några sådana samt Pentium.
Användarvisningsbild
psynoise
EF Sponsor
Inlägg: 7226
Blev medlem: 26 juni 2003, 19:23:36
Ort: Landvetter

Re: Maskinkod mikroprocessor!

Inlägg av psynoise »

Jag håller med TomasL angående mikrokod. Till exempel för flygvapnets gamla Censor 932 utvecklade man språket MICRO för att ge möjlighet till symbolisk adressering. Däremot ligger assemblerspråk en abstraktionsnivå högre.
Med assemblern fick programmeraren möjlighet att tillämpa symbolisk adressering,
namnsätta och definiera symboliska variabler samt att benämna den aktuella instruktionen
med dess mnemoniska kod.
http://fht.nu/Dokument/Flygvapnet/flyg_ ... rrgc_f.pdf
Användarvisningsbild
Krille Krokodil
Inlägg: 4062
Blev medlem: 9 december 2005, 22:33:11
Ort: Helsingborg

Re: Maskinkod mikroprocessor!

Inlägg av Krille Krokodil »

Grunderna du behöver för att förstå en CPUs inre är boolesk algebra,
Kaurnaugh-diagram, synkrona tillståndsmaskiner samt lite till,
behärskar man allt detta så kan man med papper och penna konstruera en
enkel CPU. Du har alla grunderna här:

http://www.allaboutcircuits.com/vol_4/index.html
Norberg
Inlägg: 130
Blev medlem: 13 januari 2006, 19:03:39
Kontakt:

Re: Maskinkod mikroprocessor!

Inlägg av Norberg »

http://www.nand2tetris.org/ - Gratis kurs på nätet där ett av stegen är att designa en egen enkel CPU ifrån grunden. Man börja med NAND grindar och bygger sedan all byggstenar man behöver utifrån det tills man har en helt komplett CPU. Vill man sedan gå vidare efter det så fortsätter kursen med kompilator design och att därefter skriva ett eget OS. CPUn är väldigt enkel så den har ingen microkod men i och med att man bygger CPU själv så ger det troligen mer förståelse jämfört med att bara läsa teori.
discomike
Inlägg: 445
Blev medlem: 22 juli 2007, 11:34:13
Ort: Göteborg

Re: Maskinkod mikroprocessor!

Inlägg av discomike »

Kan tipsa om ett tal jag såg på årets CCC-kongress "Introduction to Processor Design" där han förklarar en enkel cpu kärna fungerar och implementerar den i vhdl:



Han visar även upp hur lätt det är att plantera en hårdvaru-bakdörr i en ARM-kärna (med bara 6 rader extra kod) som sen utnyttjas för att utföra en privilege escalation-attack.
Skriv svar