Muistisolut, portit ja rekisterit. RAM:n looginen rakenne graafisessa muodossa

Kenraali lohkokaavio prosessori

von Neumannin periaate

Luento 3

Von Neumannin periaate. ALU. Ohjelma komentokoodien sarjana. Muistisolun osoite. Prosessorirekisterit. Kuinka prosessori lisää kaksi numeroa.

Enemmistö nykyaikaiset tietokoneet perustuu amerikkalaisen tiedemiehen, yhden kybernetiikan isän, John von Neumannin muotoilemiin periaatteisiin. Von Neumann julkaisi nämä periaatteet ensimmäisen kerran vuonna 1945 EDVAC-konetta koskevissa ehdotuksissaan. Tämä tietokone oli yksi ensimmäisistä tallennetuista ohjelmakoneista, ts. koneen muistiin tallennetulla ohjelmalla, eikä sitä lue rei'itettyltä kortilta tai muulta vastaava laite. Yleensä nämä periaatteet tiivistyvät seuraaviin:

1) Neumannin koneen päälohkot ovat ohjausyksikkö, aritmeettis-looginen yksikkö, muisti ja syöttö-tulostuslaite.

2) Tieto on koodattu binäärimuodossa ja jaettu yksiköihin, joita kutsutaan sanoiksi.

3) Algoritmi esitetään ohjaussanojen sarjana, joka määrittää toiminnon merkityksen. Näitä ohjaussanoja kutsutaan komennoiksi. Joukkoa komentoja, jotka edustavat algoritmia, kutsutaan ohjelmaksi.

4) Ohjelmat ja tiedot tallennetaan samaan muistiin. Heterogeeniset sanat eroavat tavasta, jolla niitä käytetään, mutta eivät tavassa, jolla ne on koodattu.

5) Ohjauslaite ja aritmeettinen laite yhdistetään yleensä yhdeksi, ns keskusprosessori. Ne määrittävät suoritettavat toiminnot lukemalla komennot RAM. Algoritmin määräämä tietojenkäsittely laskee komentojen peräkkäiseen suorittamiseen ohjelman yksilöivässä järjestyksessä.

Näille periaatteille rakennettuja tietokoneita kutsutaan von Neumannin koneiksi.

Prosessori on tietokoneen keskussiru, joka suorittaa tietojenkäsittelytoimintoja ja työnjohtaja muut tietokonelaitteet.

Prosessori on siru suuri määrä suorakaiteen tai neliön muotoisia koskettimia, jotka mahtuvat helposti kämmenelle.

Mikroprosessorin keksijä piirinä, johon lähes kaikki tietokoneen peruselektroniikka on koottu, oli amerikkalainen. INTEL-yhtiö, joka julkaisi 8008-prosessorin vuonna 1970. Neljännen sukupolven tietokoneiden historia alkoi niiden ilmestymisestä.

Prosessori käyttää työssään rekistereitä - prosessorin sisällä olevia muistisoluja. Kuvassa näkyy yleinen kaava prosessori.

Prosessorin yleinen lohkokaavio

Prosessori on jaettu kahteen osaan:

käyttölaite(OU) Ja väyläliitäntä (BHI) .


Op-vahvistimen tarkoitus - komentojen suorittaminen, ja SHI valmistelee komennot ja tiedot suorittamista varten. Op-amp sisältää:

aritmeettinen logiikkayksikkö (ALU)- "vastuussa" komentojen suorittamisesta,

ohjauslaite (CU)- hakee komennot muistista, lähettää ne ALU:lle ja siirtää saadut tulokset vaadittuun muistisoluun;

10 rekisteriä- käytetään laskelmissa.

Nämä laitteet tarjoavat komentojen suorittamisen, aritmeettisia laskelmia ja loogisia operaatioita.

Kolme SHI:n elementtiä - väyläohjausyksikkö, komentojono ja segmenttirekisterit - suorittaa seuraavat toiminnot:

tiedon siirtäminen operaatiovahvistimeen, muistiin ja ulkoisia laitteita I/O;

muistin osoitus neljän segmenttirekisterin avulla;

suorittamiseen tarvittavien komentojen hakeminen muistista komentojonoon.

Tietokoneita on kahta tyyppiä sisäinen muisti. Pysyvä muisti(ROM tai ROM - vain lukumuisti). Se on erityinen siru, josta vain lukeminen on mahdollista, koska siinä olevat tiedot "poltetaan" erityisellä tavalla eikä niitä voi muokata. Sen päätarkoitus: tukimenettelyt bootstrap, toteutus erilaisia ​​tarkastuksia jne. Ohjelmointitarkoituksiin useimmat tärkeä elementti ROM on BIOS (Basic Input/Output System) - perussyöttö/tulostusjärjestelmä.

Muistia, jota ohjelmoija käsittelee, kutsutaan RAM-muistiksi (random access memory) - hajasaantimuisti. Sen sisältö on sekä luettavaa että kirjoitettavaa. Tämä on paikka, jossa ohjelmat ja tiedot tallennetaan tietokoneen ollessa käynnissä.

Tietokoneen tärkein tietojenkäsittelylaite on aritmeettis-looginen yksikkö (ALU). Sen perusta on elektroninen piiri, joka koostuu suuresta määrästä transistoreja, jota kutsutaan summaimeksi. Summain suorittaa yksinkertaisimman loogisen ja aritmeettiset operaatiot yli datan, joka esitetään binäärikoodeina (nollat ​​ja ykköset). Loogisia operaatioita ovat looginen kertolasku (AND-operaatio), looginen yhteenlasku (OR-operaatio) ja looginen negaatio (NOT-operaatio). Loogisen kertolaskuoperaation tulos on 1, jos kaikki syötemuuttujat ovat 1, ja 0, jos vähintään yksi niistä on 0. Kun muistetaan, että 1 mallinnetaan sähköisellä signaalilla ja 0 signaalin puuttuessa, voidaan sanoa, että laitteen lähtö tulee sähköinen signaali jos ja vain jos signaali on läsnä jokaisessa tulossa:

Loogisen summausoperaation tulos on 0, jos kaikki alkuperäiset muuttujat ovat yhtä suuria kuin nolla, ja 1, jos vähintään yksi niistä on yhtä suuri kuin 1. Loogisen negaatiooperaation tulos on 1, jos syöte on 0, ja 0, jos syöte on 0 tulo on -1.

Näillä kolmella operaatiolla voidaan suorittaa aritmeettisia operaatioita luvuille, jotka esitetään nollana ja ykkösenä. Teoreettinen perusta tätä varten ovat irlantilaisen matemaatikon George Boolen vuonna 1847 kehittämät lait, jotka tunnetaan nimellä Boolen algebra, joka käyttää vain kahta numeroa - 0 ja 1. Aikaisemmin uskottiin, että kukaan ei tarvinnut näitä Boolen teoksia, ja niiden kirjoittaja alistettiin pilkata. Kuitenkin vuonna 1938 amerikkalainen insinööri Claude Shannon laittoi Boolen algebra sähköisten ja elektronisten kytkentälaskupiirien teorian perusta, jonka luominen johti tietokoneiden syntymiseen, jotka pystyivät automaattisesti suorittamaan aritmeettisia laskelmia.

Kaikki muut tietokoneen suorittamat toiminnot laskevat suuri määrä yksinkertainen aritmetiikka ja loogisia operaatioita, samalla tavalla kuin kertolasku voidaan pelkistää suureksi määräksi yhteenlaskuoperaatioita.

Nykyaikaisissa tietokoneissa aritmeettis-looginen yksikkö yhdistetään ohjauslaitteiden kanssa yhdeksi piiriksi - CPU .

Tietokonejärjestelmissä muistinhallinta perustuu hyvin yksinkertaisiin käsitteisiin. Pohjimmiltaan tietokoneen muistia tarvitaan vain yhden bitin tallentamiseen, jotta se voidaan hakea myöhemmin.

Yksi tietokoneen pääelementeistä, joka mahdollistaa sen normaalin toiminnan, on muisti. Tietokoneen sisäiseen muistiin tallennetaan tiedot, joiden kanssa se toimii. Tietokoneen sisäinen muisti on väliaikainen työtila; toisin kuin hän ulkoinen muisti, kuten levykkeellä oleva tiedosto, on suunniteltu tietojen pitkäaikaiseen tallentamiseen. Sisäisen muistin tiedot eivät säily, kun virta katkaistaan.

Jokaisella muistisolulla on osoite, jota käytetään sen paikantamiseen. Osoitteet - nämä ovat numeroita, jotka alkavat nollasta ensimmäisen solun kohdalla ja kasvavat viimeistä muistisolua kohti. Koska osoitteet ovat samoja kuin numerot, tietokone voi käyttää aritmeettisia operaatioita muistiosoitteiden laskemiseen.

Jokaisen tietokoneen arkkitehtuuri asettaa omat rajoituksensa osoitteiden koolle. Suurin mahdollinen osoite määrittää, kuinka paljon osoitetilaa tietokoneella on tai kuinka paljon muistia se voi käyttää. Tyypillisesti tietokone käyttää vähemmän muistia kuin sen osoitusominaisuudet sallivat. Jos tietokoneen arkkitehtuuri sallii suurimman osoitetilan, tämä asettaa vakavia rajoituksia kyseisen tietokoneen ominaisuuksille. 8088:n osoitteet ovat 20 bittiä pitkiä, joten prosessori voi osoittaa kaksi tavun 20. potenssiin tai 1024K.

RAM:n rakenne ja toimintaperiaate

RAM on olennainen osa mitä tahansa tietokonejärjestelmä, tämä muisti tallentaa koko järjestelmän toimintaan tarvittavat tiedot tietty hetki aika. RAM-siruja luotaessa käytetään dynaamista muistia, joka on hitaampaa mutta halvempaa kuin staattinen muisti, jota käytetään prosessorin välimuistin luomiseen.

Mistä RAM-ydin koostuu?

RAM-sirun ydin koostuu valtavasta määrästä muistisoluja, jotka on yhdistetty suorakaiteen muotoisiksi taulukoiksi - matriiseiksi. Matriisin vaakasuoria palkkeja kutsutaan rivit, ja pystysuoraan sarakkeita. Matriisin koko suorakulmio kutsutaan sivu, ja sivujen kokoelmaa kutsutaan pankki .

Vaaka- ja pystysuorat viivat ovat johdin, vaaka- ja vaakasuuntaisten linjan leikkauskohdassa pystysuorat viivat ja ovat muistisolut .

Mistä muistisolu koostuu?

Muistisolu koostuu yhdestä kenttäefektitransistori ja yksi kondensaattori. Kondensaattori toimii tietovarastona, se voi tallentaa yhden bitin dataa, eli joko loogisen bitin (kun se on ladattu) tai loogisen nollan (kun se on tyhjä). Transistorilla on rooli sähköinen avain, joka joko pitää varauksen kondensaattorissa tai avautuu lukemista varten.

Muistin regenerointi

Tietovarastona toimivalla kondensaattorilla on mikroskooppiset mitat ja sen seurauksena pieni kapasiteetti, minkä vuoksi se ei voi itsepurkauksen vuoksi tallentaa sille määrättyä varausta pitkään. Voit torjua tätä ongelmaa käyttämällä muistin regenerointi, jonka kanssa tietyin väliajoin lukee soluja ja kirjoittaa uudelleen. Tämän ilmiön ansiosta tätä muistia kutsutaan dynaamiseksi.

Muistin lukeminen

Jos meidän täytyy lukea muistia, niin tietty rivi muistisivuilla lähetetään signaali, joka avaa transistorin ja ohittaa sähkövaraus, joka sisältyy (tai ei sisälly) vastaavan sarakkeen kondensaattoriin. Jokaiseen kolonniin on kytketty herkkä vahvistin, joka reagoi kondensaattorista vapautuvaan pieneen elektronivirtaan. Mutta tässä on vivahde - matriisin riville syötetty signaali avaa kaikki tietyn rivin transistorit, koska ne kaikki on kytketty tiettyyn riviin, ja siten koko rivi luetaan. Edellä olevan perusteella käy selväksi, että muistissa oleva rivi on lukemisen vähimmäisarvo - yhtä solua ei voi lukea vaikuttamatta muihin.

Muistin lukuprosessi on tuhoisa, koska lukukondensaattori luovutti kaikki elektroninsa, jotta herkkä vahvistin voisi kuulla sen. Ja siksi jokaisen rivin lukemisen jälkeen se on kirjoitettava uudelleen.

Muistin käyttöliittymä

Muistin liitäntäosassa tulee olla osoiterivejä ja datalinjoja. Osoiteviivat osoittavat solun osoitteeseen ja datarivit luku- ja kirjoitusmuistiin.

Älä unohda lähteä

varten viime viikolla Selitin ihmisille kahdesti, kuinka muistin kanssa työskentely x86:ssa on järjestetty, jotta minun ei tarvitsisi selittää kolmatta kertaa, kun kirjoitin tämän artikkelin.

Ja niin, jotta ymmärrät muistin organisoinnin, sinun on tiedettävä joitain peruskäsitteitä, kuten rekisterit, pino jne. Yritän selittää tämän yksityiskohtaisesti matkan varrella, mutta hyvin lyhyesti, koska tämä ei ole tämän artikkelin aihe. Joten aloitetaan.

Kuten ohjelmoija tietää, ohjelmia kirjoittaessaan hän ei työskentele fyysisen osoitteen kanssa, vaan vain loogisen osoitteen kanssa. Ja vain jos hän ohjelmoi assemblerissä. Samassa C:ssä muistisolut ovat jo piilotettu ohjelmoijalta osoittimilla, hänen oman mukavuudensa vuoksi, mutta karkeasti sanottuna osoitin on toinen esitys loogisesta muistiosoitteesta, ja Javassa ei ole osoittimia, täysin huono kieli. Kuitenkin pätevä ohjelmoija hyötyisi tiedosta, miten muisti on järjestetty, ainakin yleisellä tasolla. Yleensä ohjelmoijat, jotka eivät tiedä kuinka kone toimii, todella järkyttivät minua, yleensä tämä on Java-ohjelmoijat ja muita PHP-tyyppejä, joilla on huonompi pätevyys.

Okei, nyt riittää surullisia juttuja, mennään asiaan.
Harkitse osoiteavaruutta ohjelmatila 32 bitin prosessori(64 bitin kohdalla kaikki on sama)
Tämän tilan osoiteavaruus koostuu 2^32 muistisolusta, jotka on numeroitu välillä 0 - 2^32-1.
Ohjelmoija työskentelee tämän muistin kanssa, jos hänen on määriteltävä muuttuja, hän yksinkertaisesti sanoo, että muistisolu, jolla on osoite sellainen ja sellainen, sisältää tämän ja tämän tyyppistä dataa, kun taas ohjelmoija itse ei välttämättä tiedä mikä numero tässä solussa on, hän kirjoittaa vain jotain tällaista:
int data = 10;
Tietokone ymmärtää sen näin: sinun on otettava jokin solu, jossa on numero sata sata ja asetettava siihen kokonaisluku 10. Lisäksi et tiedä solun 18894 osoitetta, se on piilotettu sinulta.

Kaikki olisi hyvin, mutta herää kysymys, kuinka tietokone etsii tätä muistisolua, koska muistimme voi olla erilainen:
Tason 3 välimuisti
Tason 2 välimuisti
1 välimuistitaso
päämuisti
kovalevy

Tämä on kaikki erilaisia ​​muistoja, mutta tietokone löytää helposti, mikä niistä sisältää int-tietomuuttujamme.
Tämän ongelman ratkaisee käyttöjärjestelmä yhdessä prosessorin kanssa.
Koko seuraava artikkeli on omistettu tämän menetelmän analyysille.

x86-arkkitehtuuri tukee pinoa.

Pino on jatkuva RAM-alue, joka on järjestetty lautaspinon periaatteen mukaan, et voi ottaa lautasia pinon keskeltä, voit ottaa vain ylimmän ja voit laittaa lautasen vain pinon päälle. pino.
Prosessorissa pinon kanssa työskentelyä varten on järjestetty erityiset konekoodit, joiden kokoonpanomuistit näyttävät tältä:

Työnnä operandi
työntää operandin pinoon

Pop operandi
ponnahtaa arvon pinon yläosasta ja laittaa sen operandiinsa

Muistissa oleva pino kasvaa ylhäältä alas, mikä tarkoittaa, että kun lisäät siihen arvon, pinon yläosan osoite pienenee ja siitä poistuttaessa pinon yläosan osoite kasvaa.

Katsotaanpa nyt lyhyesti, mitä rekisterit ovat.
Nämä ovat itse prosessorissa olevia muistisoluja. Tämä on nopein ja kallein muistityyppi, kun prosessori suorittaa joitain toimintoja arvolla tai muistilla, se ottaa nämä arvot suoraan rekistereistä.
Prosessorissa on useita logiikkajoukkoja, joista jokaisella on omat konekoodinsa ja omat rekisterisarjansa.
Ohjelman perusrekisterit Kaikki ohjelmat käyttävät näitä rekistereitä kokonaislukutietojen käsittelyyn.
Floating Point Unit -rekisterit (FPU) Nämä rekisterit toimivat liukulukudatalla.
On myös MMX- ja XMM-rekistereitä, joita käytetään, kun sinun on suoritettava yksi käsky suuri määrä operandit

Katsotaanpa lähemmin pääohjelmien rekistereitä. Näihin kuuluu kahdeksan 32-bittistä rekisteriä yleiseen tarkoitukseen: EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP
Jos haluat sijoittaa tietoja rekisteriin tai poistaa tietoja rekisteristä muistisoluun, käytä mov-komentoa:

Mov eax, 10
lataa numeron 10 eax-rekisteriin.

Mov data, ebx
kopioi ebx-rekisterissä olevan numeron datamuistipaikkaan.

ESP-rekisteri sisältää pinon yläosan osoitteen.
Yleisrekisterien lisäksi pääohjelmarekistereissä on kuusi 16-bittistä segmenttirekisteriä: CS, DS, SS, ES, FS, GS, EFLAGS, EIP
EFLAGS näyttää bittejä, joita kutsutaan lippuiksi, jotka kuvastavat prosessorin tilaa tai kuvaavat aiempien käskyjen edistymistä.
EIP-rekisteri sisältää seuraavan prosessorin suorittaman käskyn osoitteen.
En kuvaile FPU-rekistereitä, koska emme tarvitse niitä. Lyhyt poikkeamamme rekistereistä ja pinosta on siis ohi, palataan muistin järjestämiseen.

Kuten muistat, artikkelin tarkoitus on puhua loogisen muistin muuntamisesta fyysiseksi muistiksi, itse asiassa on välivaihe ja koko ketju näyttää tältä:

Looginen osoite --> Lineaarinen (virtuaalinen) --> Fyysinen
Koko lineaarinen osoiteavaruus on jaettu segmentteihin. Jokaisen prosessin osoiteavaruudessa on vähintään kolme segmenttiä:
Koodisegmentti.(sisältää ohjelmamme komentoja, jotka suoritetaan.)
Datasegmentti.(Sisältää dataa eli muuttujia)
pino segmentti, josta kirjoitin edellä.


Lineaarinen osoite lasketaan kaavalla:
lineaarinen osoite = Janan kantaosoite (kuvassa tämä on segmentin alku) + offset
Koodisegmentti
Koodisegmentin kantaosoite otetaan CS-rekisteristä. Koodisegmentin offset-arvo otetaan EIP-rekisteristä, joka tallentaa käskyn osoitteen, jonka suorittamisen jälkeen EIP-arvoa kasvatetaan tämän käskyn koolla. Jos komento kestää 4 tavua, EIP-arvoa kasvatetaan 4 tavulla ja se osoittaa jo seuraavat ohjeet. Kaikki tämä tapahtuu automaattisesti ilman ohjelmoijan osallistumista.
Muistissamme voi olla useita koodisegmenttejä. Meidän tapauksessamme niitä on vain yksi.
Datasegmentti
Tiedot ladataan rekistereihin DS, ES, FS, GS
Tämä tarkoittaa, että datasegmenttejä voi olla enintään 4. Kuvassamme hän on yksin.
Datasegmentin poikkeama määritetään käskyn operandiksi. Oletusarvoisesti käytetään segmenttiä, johon DS-rekisteri osoittaa. Jos haluat syöttää toisen segmentin, sinun on ilmoitettava tämä suoraan segmentin korvausetuliite -komennossa.
Pino segmentti
Käytetty pinosegmentti määräytyy SS-rekisterin arvon perusteella.
Tämän segmentin siirtymää edustaa ESP-rekisteri, joka osoittaa pinon yläosaan, kuten muistat.
Lisäksi muistissa olevat segmentit voivat mennä päällekkäin perusosoite Kaikista segmenteistä voi osua yhteen esimerkiksi nollassa. Tätä rappeutunutta tapausta kutsutaan lineaariseksi muistiesitukseksi. IN nykyaikaiset järjestelmät, muisti on yleensä järjestetty tällä tavalla.

Katsotaan nyt segmentin perusosoitteiden määritelmää, kirjoitin, että ne sisältyvät SS-, DS-, CS-rekistereihin, mutta tämä ei ole täysin totta, ne sisältävät tietyn 16-bittisen valitsimen, joka osoittaa tiettyyn segmenttiin kuvaaja, johon vaadittu osoite on jo tallennettu.


Tältä valitsin näyttää, sen kolmetoista bittiä sisältävät deskriptorin indeksin deskriptoritaulukossa. Ei ole vaikeaa laskea, että 2^13 = 8192 on enimmäismäärä kuvaukset taulukossa.
Yleisesti ottaen on olemassa kahdenlaisia ​​deskriptoritaulukoita GDT ja LDT Ensimmäistä kutsutaan globaaliksi kuvaajataulukoksi, sitä on aina vain yksi järjestelmässä, sen aloitusosoite tai pikemminkin sen nollakuvaajan osoite on tallennettu 48-bittinen järjestelmärekisteri GDTR. Ja siitä hetkestä lähtien, kun järjestelmä käynnistyy, se ei muutu eikä osallistu vaihtoon.
Mutta kuvaajien arvot voivat muuttua. Jos valitsin sisältää TI-bitin yhtä kuin nolla, sitten prosessori siirtyy yksinkertaisesti GDT:hen ja etsii indeksistä tarvittavaa kuvaajaa, jolla tähän segmenttiin pääsee käsiksi.
Tähän asti kaikki on ollut yksinkertaista, mutta jos TI on 1, niin tämä tarkoittaa, että LDT:tä käytetään. Näitä pöytiä on monia, mutta niitä käytetään tällä hetkellä on se, jonka valitsin ladataan LDTR-järjestelmän rekisteriin, joka, toisin kuin GDTR, voi muuttua.
Valitsinindeksi osoittaa kuvaajaan, joka ei enää osoita segmentin perusosoitteeseen, vaan muistiin, johon paikallinen kuvaajataulukko on tallennettu, tai pikemminkin sen muistiin. nolla elementti. No, sitten kaikki on sama kuin GDT:ssä. Näin toiminnan aikana paikallisia taulukoita voidaan luoda ja tuhota tarpeen mukaan. LDT:t eivät voi sisältää kuvauksia muille LDT:ille.
Tiedämme siis, kuinka prosessori pääsee kuvaajaan, ja katsotaan mitä tämä kuvaaja sisältää kuvassa:

Kuvaajat koostuvat 8 tavusta.
Bitit 15-39 ja 56-63 sisältävät tämän segmenttikuvaajan kuvaaman segmentin lineaarisen kantaosoitteen. Muistutan teitä lineaarisen osoitteen löytämiskaavasta:

lineaarinen osoite = perusosoite + offset
Tällä yksinkertaisella toimenpiteellä prosessori pääsee käsiksi oikeaan osoitteeseen lineaarinen muisti.
Katsotaanpa kuvaajan muita bittejä, Segment Limit eli raja on erittäin tärkeä, sillä on 20-bittinen arvo välillä 0-15 ja 48-51 bittiä. Raja määrittää segmentin koon. Data- ja koodisegmenteille kaikki välissä olevat osoitteet ovat saatavilla:
[pohja; perus + raja)
Riippuen 55 G-bitistä (rakeisuus), raja voidaan mitata tavuissa, kun bittiarvo on nolla ja sitten maksimiraja on 1 MB, tai arvolla 1 raja mitataan sivuina, joista jokainen on 4 KB. Ja enimmäiskoko Tämä segmentti on 4 Gt.
Pinosegmentin raja on alueella:
(perus + raja; ylhäältä]
Muuten, ihmettelen, miksi kanta ja raja sijaitsevat niin rosoisesti kuvauksessa. Tosiasia on, että x86-prosessorit kehittyivät evolutiivisesti ja 286x:n päivinä kuvaajat olivat yhteensä 8 bittiä, kun taas suurimmat 2 tavua oli varattu, mutta myöhemmissä prosessorimalleissa bittikapasiteetin kasvaessa myös kuvaajat kasvoivat, mutta säästääkseen taaksepäin yhteensopivuus Jouduin jättämään rakenteen ennalleen.
"Yläosan" osoitteen arvo riippuu 54. D-bitistä, jos se on 0, niin ylin on 0xFFF(64kb-1), jos D-bitti on 1, niin top on 0xFFFFFFFF (4Gb-1)
41-43 bittiä segmenttityyppi koodataan.
000 - datasegmentti, vain luku
001 - datasegmentti, lue ja kirjoita
010 - pinosegmentti, vain luku
011 - pinoa segmentti, lue ja kirjoita
100 - koodisegmentti, vain suoritus
101 - koodisegmentti, lue ja suorita
110 - orjakoodisegmentti, vain suoritus
111 - orjakoodisegmentti, suoritus ja vain luku

44 S bittiä, jos se on 1, kuvaaja kuvaa todellista RAM-segmenttiä, muuten S-bitin arvo on 0.

Tärkein bitti on 47. P läsnäolobitti. Jos bitti on yhtä suuri kuin 1, se tarkoittaa, että segmentti tai paikallinen kuvaajataulukko ladataan RAM-muistiin, jos tämä bitti on 0, tämä tarkoittaa, että tämä segmentti ei ole RAMissa, se sijaitsee kiintolevyllä, tapahtuu keskeytys , prosessorin toiminnan erikoistapaus käynnistää käsittelijän erityinen tilaisuus, joka lataa halutun segmentin kovalevy muistiin, jos P bitti on 0, niin kaikki deskriptorikentät menettävät merkityksensä ja vapautuvat tallentamaan niihin palveluinformaatiota. Kun käsittelijä on saanut työnsä valmiiksi, P-bitti asetetaan arvoon 1 ja deskriptoriin päästään uudelleen, jonka segmentti on jo muistissa.

Tämä päättää loogisen osoitteen muuntamisen lineaariseksi, ja mielestäni meidän pitäisi lopettaa tähän. Seuraavalla kerralla käsittelen lineaarisen fyysiseksi muuntamisen toista osaa.
Ja mielestäni kannattaa myös puhua hieman funktioargumenttien välittämisestä ja muuttujien sijoittamisesta muistiin, jotta saadaan jokin yhteys todellisuuteen, koska muuttujien sijoittaminen muistiin on asia, jota sinun tulee käsitellä työssäsi, eikä vain mitä varten teoreettisia spekulaatioita järjestelmän ohjelmoija. Mutta ymmärtämättä kuinka muisti toimii, on mahdotonta ymmärtää, kuinka nämä samat muuttujat tallennetaan muistiin.
Yleisesti ottaen toivon, että se oli mielenkiintoista ja nähdään taas.

Nižni Novgorodin alueen opetus- ja tiedeministeriö

valtion talousarvio oppilaitos

keskimäärin ammatillinen koulutus

"Borin maakuntaopisto"

Erikoisala 230701 Soveltava tietojenkäsittelytiede(toimialan mukaan)

Abstrakti

Aiheesta: RAM-muistin rakenne.

Tieteenala: Käyttöjärjestelmät ja ympäristöt.

Valmistunut:

opiskelija gr. IT-41

Rodov A.E.

Tarkistettu:

Markov A.V.

Borin kaupunkialue

201 5

Johdanto

RAM(englanninkielisestä Random Access Memory) -muistista satunnainen pääsy. RAM ( käyttömuisti)haihtuvia osa järjestelmää tietokoneen muisti, johon suoritettava tiedosto tallennetaan tietokoneen ollessa käynnissä. konekoodi ( ohjelmat) ja

Muuttaa

Arkki

Asiakirja nro

Allekirjoitus

Päivämäärä

Arkki

PPP PI 23.00.00 TO

syöttö, ulostulo prosessorin käsittelemät välitiedot.

  1. RAM-muistin rakenne

RAM koostuu soluista, joista jokainen voi sisältää informaatioyksikön - konesanan. Jokaisella solulla on kaksi ominaisuutta: osoite ja sisältö. Mikroprosessorin osoiterekisterin kautta pääset mihin tahansa muistisoluun.

  1. Segmentaalinen muistimalli

Olipa kerran, syntymän kynnyksellä tietokonelaitteet, RAM oli hyvin pieni ja sen käsittelemiseen käytettiin 2 tavua (ns. sana). Tämä lähestymistapa mahdollisti 64 KB:n muistin osoittamisen, ja osoitus oli lineaarinen - osoite käytettiin yhdellä numerolla. Myöhemmin tekniikan parantuessa valmistajat ymmärsivät, että suurempiakin määriä muistia oli mahdollista tukea, mutta tätä varten heidän piti suurentaa osoitekokoa. Yhteensopivuuden vuoksi jo kirjoitettujen ohjelmistojen kanssa päätettiin tehdä näin: osoitus on nyt kaksikomponenttinen (segmentti ja offset), joista jokainen on 16-bittinen, ja vanhat ohjelmat, koska ne käyttivät yhtä 16-bittistä komponenttia eivätkä tiedä mitään segmenteistä, jatka työtä

Muuttaa

Arkki

Asiakirja nro

Allekirjoitus

Päivämäärä

Arkki

PPP PI 23.00.00 TO

RAM:n looginen rakenne

Osoitetila on joukko osoitteita, jotka prosessori voi luoda. Mitä varten? Hyvä kysymys. Tosiasia on, että jokaisella muistisolulla on osoite. Ja jotta voit lukea (tai kirjoittaa) siihen tallennettuja tietoja, sinun on käytettävä niitä sen osoitteessa. Osoitteet jaetaan virtuaalisiin (loogisiin) ja fyysisiin. Fyysiset osoitteet nämä ovat todellisten muistisolujen todellisia osoitteita. Ohjelmat ovat syvästi rinnakkaisia ​​tällaisten osoitteiden kanssa, koska ne toimivat symbolisilla nimillä, jotka sitten kääntäjä muuntaa virtuaalisiksi osoitteiksi. Sitten virtuaaliosoitteet muunnetaan fyysisiksi.

Loogiset osoitteet esitetään heksadesimaalimuodossa ja koostuvat kahdesta osasta. Loogisesti RAM on jaettu segmentteihin. Joten loogisen osoitteen ensimmäinen osa on segmentin alku ja toinen on siirtymä tästä alusta (segmentti, offset)

Looginen rakenne on jaettu 5 vyöhykkeeseen:

1. Perinteinen muisti päämuisti;

Alkaa osoitteesta 00000 (0000:0000) ja nousee 90000:aan (9000:0000). Tämä vie 640 kt. Ensinnäkin tälle alueelle ladataan keskeytysvektoritaulukko, alkaen 00000:sta ja vie 1 KB, minkä jälkeen tiedot BIOS (ajastinlaskuri, näppäimistöpuskuri jne.) ja sitten kaikenlaisia ​​16-bittisiä ohjelmia DOS (heille 640 kt on este, jonka yli vain 32-bittiset ohjelmat voivat hypätä). Dataa varten BIOS ja 768 tavua on varattu.
2. UMA (ylempi muistialue ) ylempi muisti;

Alkaa osoitteesta A0000 ja ylöspäin FFFFF . Se vie 384 kt. Tietokonelaitteistoon liittyvät tiedot ladataan tähän. UMA voidaan jakaa kolmeen 128 kt:n osaan. Ensimmäinen osa (A0000- BFFFF ) on tarkoitettu videomuistiin. Seuraavaan osaan (alkaen 0000 - DFFFF ) ohjelmat latautuvat BIOS adapterit. Viimeinen osa (alk E 0000 FFFFF:lle ) varattu järjestelmälle BIOS . Tosiasia on, että viimeiset 128 kilotavua eivät ole täysin käytössä. Useimmissa tapauksissa alle BIOS vain viimeiset 64 kt käytetään. Ilmainen osa U.M.B. kuljettajan ohjaama EMM 386.EXE ja sitä käytetään tarpeisiin käyttöjärjestelmä.
3. HMA (High Memory Area) suuri muistialue;

Muuttaa

Arkki

Asiakirja nro

Allekirjoitus

Päivämäärä

Arkki

PPP PI 23.00.00 TO

Alueen historia H.M.A. ulottuu aina 80286-prosessoriin, tai pikemminkin sen piirissä olevaan virheeseen. Olen jo sanonut, että 8086- ja 8087-prosessoreissa oli 20-bittinen osoiteväylä, joka toimi todellinen tila ja voisi ottaa yhteyttä osoitteeseen mahdollisimman paljon FFFFF (FFFF :000 F ). Mutta 80286-prosessorissa oli jo 24-bittinen osoiteväylä, se toimi todellisessa ja suojatussa tilassa ja pystyi käsittelemään jopa 16 Mt muistia.
4. XMS (laajennettu muistimääritys ) lisämuistia;

Työskennellä sisään XMS DOS:ia käyttäen , prosessoreille kehitettiin toinen tila - virtuaalinen. DOS ei voi ylittää 640 kilotavun rajaa, virtuaalinen tila antaa sinun rikkoutua lisämuistia osiin

1 Mt. Jokainen osa on ladattu ohjelmalla DOS ja siellä ne kypsennetään todellisessa tilassa, mutta toisiaan häiritsemättä ne suoritetaan samanaikaisesti. 32-bittiset sovellukset eivät välitä 640 kt:n esteestä. XMS vastaa prosessoritilojen ohjaimen kääntämisestä EMM 386.EXE ja itse alueen organisointiin HIMEM. SYS . Katso mitä sisälläsi tapahtuu XMS on mahdollista Norton Utilities -paketin SysInfon avulla.
5. EMS (Expanded Memory Specification) laajennettu muisti;

Tämä alue sijaitsee ylemmässä muistissa ja vie noin 64 kt. Sitä käytettiin aiemmin vain vanhoissa tietokoneissa, joissa oli RAM-muisti

1 Mt. Spesifikaationsa vuoksi tämä on melko hidas alue. Tosiasia on, että laajennettu muisti on yksi monista kytketyistä segmenteistä. Kun segmentti on täynnä, käytetty segmentti korvataan uudella. Mutta voit työskennellä vain yhden segmentin kanssa, ja tämä, sinun täytyy itse ymmärtää, ei ole kovin hyvä, kätevä ja nopea. Tyypillisesti ensimmäinen jakso EMS sijaitsee osoitteessa D000.

RAM-muistin looginen rakenne graafinen muoto.

Muuttaa

Arkki

Asiakirja nro

Allekirjoitus

Päivämäärä

Arkki

PPP PI 23.00.00 TO

4. DRAM Dynamic Random Access Memory

DRAM - Tämä on hyvin vanhan tyyppinen RAM-siru, jota ei ole käytetty pitkään aikaan. Toisella tavalla DRAM tämä dynaaminen muisti satunnaisessa otosjärjestyksessä. Minimiyksikkö tietoja tallennettaessa tai siirrettäessä tietoja tietokoneeseen on vähän. Jokaisella bitillä voi olla kaksi tilaa: päällä (kyllä, 1) tai pois päältä (ei, 0). Mikä tahansa tietomäärä koostuu lopulta bitteistä, jotka kytketään päälle ja pois. Siten minkä tahansa datamäärän tallentamiseksi tai lähettämiseksi on tarpeen tallentaa tai lähettää tämän datan jokainen bitti sen tilasta riippumatta.

Tietobittien tallentamiseksi RAM-muistiin on soluja. Kennot koostuvat kondensaattoreista ja transistoreista. Tässä on likimääräinen ja yksinkertaistettu kaavio DRAM-solusta:

Jokainen solu voi tallentaa vain yhden bitin. Jos kennokondensaattori on ladattu, se tarkoittaa, että bitti on päällä, jos se on tyhjä, se on pois päältä. Jos sinun on tallennettava yksi tavu tietoa, tarvitset 8 solua (1 tavu = 8 bittiä). Solut sijaitsevat matriiseissa ja jokaisella niistä on oma osoite, joka koostuu rivinumerosta ja sarakenumerosta.

Muuttaa

Arkki

Asiakirja nro

Allekirjoitus

Päivämäärä

Arkki

PPP PI 23.00.00 TO

Katsotaan nyt kuinka lukeminen tapahtuu. Ensinnäkin RAS (Row Address Strobe) -signaali syötetään kaikkiin tuloihin, tämä on rivin osoite. Tämän jälkeen kaikki tämän rivin tiedot kirjoitetaan puskuriin. Sitten CAS (Column Address Strobe) -signaali syötetään rekisteriin, joka on sarakesignaali, ja valitaan bitti, jolla on vastaava osoite. Tämä bitti syötetään lähtöön. Mutta lukemisen aikana lukurivin solujen tiedot tuhoutuvat ja ne on kirjoitettava uudelleen puskurista ottamalla.

Nyt äänitys. WR (Write) -signaali syötetään ja tiedot syötetään sarakeväylään ei rekisteristä, vaan siitä tietojen syöttäminen muisti kytkimen kautta, osoitteen määrittelemä sarakkeessa. Näin ollen tietojen kulku kirjoitettaessa määräytyy sarake- ja riviosoitesignaalien yhdistelmällä ja luvalla kirjoittaa tietoja muistiin. Kirjoitettaessa rivirekisterin tietoja ei tulosteta.

On otettava huomioon, että matriisit soluilla on järjestetty seuraavasti:

Muuttaa

Arkki

Asiakirja nro

Allekirjoitus

Päivämäärä

Arkki

PPP PI 23.00.00 TO

Tämä tarkoittaa, että yhtä bittiä ei lueta kerrallaan, vaan useita. Jos rinnakkain on 8 matriisia, yksi tavu luetaan kerralla. Tätä kutsutaan bittisyvyydeksi. Niiden juovien lukumäärä, joita pitkin dataa lähetetään rinnakkaisista matriiseista (tai niihin), määräytyy mikropiirin tulo/lähtöväylän leveyden mukaan.
Kun puhutaan DRAM:n toiminnasta, yksi seikka on otettava huomioon. Koko asia on, että kondensaattorit eivät voi varastoida latausta loputtomiin, ja se lopulta "tyhjentyy". Siksi kondensaattorit on ladattava. Lataustoimintoa kutsutaan Refresh tai regeneraatioksi. Tämä toiminto tapahtuu noin 2 ms:n välein ja kestää joskus jopa 10 % (tai jopa enemmän) prosessorin työajasta.

Tärkein ominaisuus DRAM on nopeus tai yksinkertaisemmin sanottuna syklin kesto + latenssi + pääsyaika, jossa syklin kesto tiedonsiirtoon käytetty aika, latenssi ensimmäinen asennus rivi- ja sarakeosoitteet, ja pääsyaika on itse solun hakuaika. Tämä roska mitataan nanosekunteina (sekunnin miljardisosa). Nykyaikaisten muistisirujen nopeudet ovat alle 10 ms.

RAM-muistia ohjaa piirisarjassa oleva ohjain emolevy, tai pikemminkin siinä osassa sitä nimeltä North Bridge.

Muuttaa

Arkki

Asiakirja nro

Allekirjoitus

Päivämäärä

Arkki

PPP PI 23.00.00 TO

Ja nyt, kun olet ymmärtänyt, kuinka RAM toimii, selvitetään, miksi sitä ylipäätään tarvitaan. Prosessorin jälkeen RAM-muistia voidaan pitää nopeimpana laitteena. Siksi tärkein tiedonvaihto tapahtuu näiden kahden laitteen välillä. Kaikki tiedot sisään henkilökohtainen tietokone tallennettu kiintolevylle. Kun käynnistät tietokoneen, ajurit kirjoitetaan RAM-muistiin (Random Access Memory) ruuvista, erityisiä ohjelmia ja käyttöjärjestelmän elementit. Sitten ne ohjelmat ja sovellukset, jotka käynnistät, tallennetaan sinne. Kun suljet nämä ohjelmat, ne poistetaan RAM-muistista. RAM-muistiin tallennetut tiedot siirretään CPU:lle (Central Processing Unit), jossa ne käsitellään ja kirjoitetaan takaisin. Ja niin koko ajan: he antoivat prosessorille käskyn ottaa bitit sellaisista ja sellaisista osoitteista, jotenkin käsitellä ne siellä ja palauttaa ne paikoilleen tai kirjoittaa ne uuteen - hän teki juuri niin.

Kaikki tämä on hyvä niin kauan kuin RAM-soluja on tarpeeksi. Mitä jos ei? Sitten swap-tiedosto tulee peliin. Tämä tiedosto sijaitsee kiintolevyllä ja sinne kirjoitetaan kaikki mikä ei mahdu RAM-soluihin. Koska ruuvin nopeus on huomattavasti pienempi kuin RAM, sivutustiedoston toiminta hidastaa järjestelmää huomattavasti. Lisäksi se lyhentää itse kiintolevyn käyttöikää.

Muistin määrän lisääminen ei lisää sen suorituskykyä. Muistin koon muuttaminen ei vaikuta sen toimintaan millään tavalla. Mutta jos tarkastelemme järjestelmän toimintaa, se on eri asia. Jos sinulla on tarpeeksi RAM-muistia, äänenvoimakkuuden lisääminen ei lisää järjestelmän nopeutta. Jos RAM-soluja ei ole tarpeeksi, niiden lukumäärän lisääminen (toisin sanoen uuden lisääminen tai vanhan korvaaminen uudella, jolla on suurempi muistikapasiteetti) nopeuttaa järjestelmää.

Muuttaa

Arkki

Asiakirja nro

Allekirjoitus

Päivämäärä

Arkki

PPP PI 23.00.00 TO

Muuttaa

Arkki

Asiakirja nro

Allekirjoitus

Päivämäärä

Arkki

PPP PI 23.00.00 TO

Internet-resurssit

http://nikesina.ucoz.ru/

http://www.whatis.ru/

http://wiki.mvtom.ru/

http://www.teryra.com/

http://smartronix.ru/

http://allrefs.net/

http://sonikelf.ru/

http://beginpc.ru/

Viitteet

Käytännön opas järjestelmänvalvoja. (2012)

Andrew Tanenbaum, Todd Austin - Tietokonearkkitehtuuri (2013)

Muistisolu Tietokoneen muisti koostuu yksittäisistä bittien "hiukkasista", jotka on yhdistetty 8 bitin (tavun) ryhmiin (rekistereihin). 1 tavu on muistin perusyksikkö. Jokaisella tavulla on oma numero (osoite) ja sisältö binäärikoodi. Kun prosessori käsittelee tietoja, se löytää osoitteen muistista haluttu solu, lukee sisällöstä, suorittaa tarvittavat toimet ja kirjoittaa tuloksen toiseen muistisoluun. Muistisolu on joukko sisäisen muistin peräkkäisiä tavuja. Muistisolun konesanan sisältö Muistisolun leveys ja koko koneen sana bitteinä, jotka vastaavat prosessorin kapasiteettia






Nopea muisti, toteutettu muodossa elektroninen piiri. RAM on käytettävissä tietojen lukemiseen ja kirjoittamiseen. Se on RAM-muistissa, jossa työ suoritetaan nykyinen hetki ohjelma ja siihen tarvittavat tiedot, RAM-muistissa olevia tietoja voidaan muokata, poistaa, lisätä. Tämä on väliaikainen tallennusmuisti. RAM tallentaa tiedot vain tietokoneen kanssa työskentelyn aikana - kun tietokone on sammutettu verkosta, RAM-muistiin tallennetut tiedot menetetään ikuisesti. RAM on haihtuva laite. Kapasiteetti moderneja malleja vaihtelee välillä 512 - 1024 megatavua. RAM – hajasaantimuisti (RAM – hajasaantimuisti).


ROM - pysyvä muisti (ROM - lukumuisti - vain lukumuisti). Monissa tietokoneissa ROM on toteutettu erillisenä siruna, johon valmistuksen aikana sijoitetaan tärkeimmät komennot, jotka suorittavat alkuvuorovaikutuksen laitteiston ja laitteiston välillä. ohjelmisto. Tämän tyyppinen muisti on vain luku -muotoinen. Kun tietokone on sammutettu, tiedot tallennetaan. ROM on haihtumaton laite. ROM sisältää osan leikkaussalista BIOS-järjestelmät(Perus Input-Output System).


Välimuisti – välimuisti RAM:n ja ROM:n välillä "Cache" - piilopaikka, varasto (englanninkielinen sana). Käytetään tietokoneen nopeuden lisäämiseen. Välimuistin "salaisuus" piilee siinä, että se on näkymätön käyttäjälle ja sinne tallennetut tiedot ovat sovellusohjelmistojen ulottumattomissa. Tämän tyyppisen sisäisen muistin käyttö vähentää käyttöjen määrää kovalevy. Välimuistin puuttuminen voi vähentää merkittävästi (20-30%) yleistä suorituskykyä tietokone.


Haihtumaton muisti (CMOS-muisti, Complementary Metal-Oxid-Semicondactor) Erilaisia ​​vaihtoehtoja tietokoneen kokoonpanot, kuten numero ja tyyppi levyasemat, videosovittimen tyyppi, apuprosessorin läsnäolo ja joitain muita tietoja on tallennettu ns CMOS-muisti. CMOS-muistisiru sisältää myös tavallisen elektroninen kello. Niiden ansiosta voit selvittää sen milloin tahansa nykyinen päivämäärä ja aikaa. Jotta varmistetaan, että kun tietokoneen virta katkaistaan, CMOS-muistin sisältö ei tyhjenny ja kello jatkaa ajan laskemista, CMOS-muistisiru saa virtansa erityisestä pienestä paristosta tai akusta, joka sijaitsee myös emolevy