Mga cell ng memorya, port at rehistro. Lohikal na istraktura ng RAM sa graphical na anyo

Heneral block diagram processor

Prinsipyo ni von Neumann

Lektura 3

Prinsipyo ni Von Neumann. ALU. Isang programa bilang isang pagkakasunod-sunod ng mga command code. Address ng memory cell. Nagrerehistro ang processor. Paano nagdaragdag ang isang processor ng dalawang numero.

Karamihan mga modernong kompyuter ay batay sa mga prinsipyong binuo ng Amerikanong siyentipiko, isa sa mga ama ng cybernetics, si John von Neumann. Ang mga prinsipyong ito ay unang inilathala ni von Neumann noong 1945 sa kanyang mga panukala para sa EDVAC machine. Ang computer na ito ay isa sa mga unang nakaimbak na makina ng programa, i.e. na may isang program na nakaimbak sa memorya ng makina, at hindi nabasa mula sa isang punched card o iba pa katulad na aparato. Sa pangkalahatan, ang mga prinsipyong ito ay bumagsak sa mga sumusunod:

1) Ang mga pangunahing bloke ng isang von Neumann machine ay isang control unit, isang arithmetic-logical unit, memory at isang input-output device.

2) Ang impormasyon ay naka-encode sa binary form at nahahati sa mga yunit na tinatawag na mga salita.

3) Ang algorithm ay ipinakita sa anyo ng isang pagkakasunud-sunod ng mga control na salita na tumutukoy sa kahulugan ng operasyon. Ang mga salitang pangkontrol na ito ay tinatawag na mga utos. Ang isang hanay ng mga utos na kumakatawan sa isang algorithm ay tinatawag na isang programa.

4) Ang mga programa at data ay nakaimbak sa parehong memorya. Ang mga magkakaibang salita ay naiiba sa paraan ng paggamit nito, ngunit hindi sa paraan ng pag-encode ng mga ito.

5) Ang control device at ang arithmetic device ay karaniwang pinagsama sa isa, tinatawag gitnang processor. Tinutukoy nila ang mga aksyon na isasagawa sa pamamagitan ng pagbabasa ng mga utos mula sa RAM. Ang pagpoproseso ng impormasyon na inireseta ng algorithm ay bumababa sa sunud-sunod na pagpapatupad ng mga utos sa isang pagkakasunud-sunod na natatanging tinutukoy ng programa.

Ang mga computer na binuo sa mga prinsipyong ito ay tinatawag na von Neumann machine.

Ang processor ay ang gitnang chip ng isang computer na nagsasagawa ng mga operasyon sa pagproseso ng impormasyon at manager ng trabaho iba pang mga kagamitan sa kompyuter.

Ang processor ay isang chip na may isang malaking bilang mga contact, na may hugis-parihaba o parisukat na hugis at madaling magkasya sa iyong palad.

Ang imbentor ng microprocessor bilang isang circuit kung saan halos lahat ng pangunahing electronics ng isang computer ay binuo ay ang American kumpanya ng INTEL, na naglabas ng 8008 processor noong 1970. Nagsimula ang kasaysayan ng ikaapat na henerasyon ng mga computer sa kanilang hitsura.

Sa trabaho nito, ang processor ay gumagamit ng mga rehistro - mga cell ng memorya na matatagpuan sa loob ng processor. Ipinapakita ng figure pangkalahatang pamamaraan processor.

Pangkalahatang block diagram ng processor

Ang processor ay nahahati sa dalawang bahagi:

operating device(OU) At interface ng bus (BHI) .


Layunin ng op-amp - pagpapatupad ng mga utos, at ang SHI ay naghahanda ng mga utos at data para sa pagpapatupad. Ang op-amp ay naglalaman ng:

arithmetic logic unit (ALU)- "responsable" para sa pagpapatupad ng mga utos,

control device (CU)- kinukuha ang mga utos mula sa memorya, ipinapadala ang mga ito sa ALU at inililipat ang mga nakuhang resulta sa kinakailangang memory cell;

10 rehistro- ginagamit sa mga kalkulasyon.

Nagbibigay ang mga device na ito ng command execution, arithmetic calculations, at logical operations.

Tatlong elemento ng SHI - bus control unit, command queue at segment registers - isagawa sumusunod na mga function:

paglilipat ng data sa op-amp, sa memorya at sa mga panlabas na aparato I/O;

memory addressing gamit ang apat na segment registers;

pagkuha ng mga utos na kinakailangan para sa pagpapatupad mula sa memorya patungo sa command queue.

May dalawang uri ang kompyuter panloob na memorya. Patuloy na memorya(ROM o ROM - read-only memory). Ito ay isang espesyal na chip, kung saan posible lamang ang pagbabasa, dahil ang data sa loob nito ay "nasusunog" sa isang espesyal na paraan at hindi maaaring mabago. Ang pangunahing layunin nito: pagsuporta sa mga pamamaraan bootstrap, pagbitay iba't ibang mga tseke atbp. Para sa mga layunin ng programming, karamihan mahalagang elemento Ang ROM ay BIOS (Basic Input/Output System) - pangunahing sistema ng input/output.

Ang memorya na tinatalakay ng programmer ay tinatawag na RAM (random access memory) - random access memory. Ang mga nilalaman nito ay parehong nababasa at nasusulat. Dito iniimbak ang mga program at data habang tumatakbo ang computer.

Ang pangunahing kagamitan sa pagpoproseso ng impormasyon sa isang computer ay ang arithmetic-logical unit (ALU). Ang batayan nito ay isang electronic circuit na binubuo ng malaking bilang ng mga transistor, na tinatawag na adder. Ang adder ay gumaganap ng pinakasimpleng lohikal at mga operasyon sa aritmetika higit sa data na kinakatawan bilang mga binary code (zero at isa). Kasama sa mga lohikal na operasyon ang lohikal na pagpaparami (AND operation), lohikal na karagdagan (OR operation), at logical negation (NOT operation). Ang resulta ng logical multiplication operation ay 1 kung ang lahat ng input variable ay 1, at 0 kung isa man lang sa mga ito ay 0. Naaalala na ang 1 ay namodelo ng electrical signal, at 0 sa kawalan ng signal, masasabi natin na ang output ng device ay signal ng kuryente kung at kung ang signal ay naroroon sa bawat input:

Ang resulta ng lohikal na operasyon ng karagdagan ay 0 kung ang lahat ng orihinal na mga variable ay katumbas ng zero, at 1 kung hindi bababa sa isa sa mga ito ay katumbas ng 1. Ang resulta ng lohikal na negation operation ay 1 kung ang input ay 0, at 0 kung ang input ay -1.

Batay sa tatlong operasyong ito, maaaring isagawa ang mga operasyong aritmetika sa mga numerong kinakatawan bilang mga zero at isa. Batayang teoretikal dahil ito ang mga batas na binuo noong 1847 ng Irish mathematician na si George Boole, na kilala bilang Boolean algebra, na gumagamit lamang ng dalawang numero - 0 at 1. Noong nakaraan, pinaniniwalaan na walang nangangailangan ng mga gawang ito ng Boole, at ang kanilang may-akda ay sumailalim sa sa panlilibak. Gayunpaman, noong 1938, inilagay ng American engineer na si Claude Shannon Boolean algebra ang batayan ng teorya ng mga electrical at electronic switching adder circuits, ang paglikha nito ay humantong sa paglitaw ng mga computer na may kakayahang awtomatikong magsagawa ng mga kalkulasyon ng aritmetika.

Ang lahat ng iba pang mga operasyon na ginagawa ng computer ay bumaba sa isang malaking bilang simpleng aritmetika at lohikal na operasyon, katulad ng kung paano ang pagpaparami ng pagpaparami ay maaaring bawasan sa isang malaking bilang ng mga pagpapatakbo ng karagdagan.

Sa modernong mga computer, ang arithmetic-logical unit ay pinagsama sa mga control device sa isang solong circuit - CPU .

Sa mga sistema ng kompyuter, ang pamamahala ng memorya ay batay sa napakasimpleng mga konsepto. Karaniwan, ang lahat ng memorya ng computer ay kailangang gawin ay mag-imbak ng isang piraso ng impormasyon upang ito ay makuha sa ibang pagkakataon.

Ang isa sa mga pangunahing elemento ng isang computer na nagbibigay-daan dito upang gumana nang normal ay ang memorya. Ang panloob na memorya ng isang computer ay kung saan nakaimbak ang impormasyong ginagamit nito. Ang panloob na memorya ng computer ay isang pansamantalang workspace; hindi katulad niya panlabas na memorya, tulad ng isang file sa isang floppy disk, ay idinisenyo para sa pangmatagalang imbakan ng impormasyon. Ang impormasyon sa panloob na memorya ay hindi pinapanatili kapag ang kapangyarihan ay naka-off.

Ang bawat memory cell ay may isang address na ginagamit upang mahanap ito. Mga address - ito ay mga numero na nagsisimula sa zero para sa unang cell, na tumataas patungo sa huling memory cell. Dahil ang mga address ay kapareho ng mga numero, ang computer ay maaaring gumamit ng arithmetic operations upang kalkulahin ang mga memory address.

Ang arkitektura ng bawat computer ay nagpapataw ng sarili nitong mga paghihigpit sa laki ng mga address. Tinutukoy ng pinakamalaking posibleng address kung gaano karaming espasyo ng address ang mayroon ang computer, o kung gaano karaming memory ang magagamit nito. Karaniwan, ang isang computer ay gumagamit ng mas kaunting memorya kaysa sa pinapayagan ng mga kakayahan sa pagtugon nito. Kung pinahihintulutan ng arkitektura ng isang computer ang pinakamalaking espasyo sa address, naglalagay ito ng matinding paghihigpit sa mga kakayahan ng computer na iyon. Ang mga address sa 8088 ay 20 bits ang haba, kaya ang processor ay maaaring tumugon sa dalawa hanggang sa ikadalawampung kapangyarihan ng mga byte, o 1024K.

Ang istraktura at prinsipyo ng pagpapatakbo ng RAM

Ang RAM ay isang mahalagang bahagi ng anuman sistema ng kompyuter, ang memorya na ito ay nag-iimbak ng data na kinakailangan para sa pagpapatakbo ng buong system sa tiyak na sandali oras. Kapag lumilikha ng mga chip ng RAM, ginagamit ang dynamic na memorya, na mas mabagal ngunit mas mura kaysa sa static na memorya, na ginagamit upang lumikha ng memorya ng cache ng processor.

Ano ang binubuo ng RAM core?

Ang core ng isang RAM chip ay binubuo ng isang malaking bilang ng mga memory cell, na pinagsama sa mga hugis-parihaba na talahanayan - mga matrice. Ang mga pahalang na bar ng matrix ay tinatawag mga linya, at patayo mga hanay. Ang buong parihaba ng matrix ay tinatawag pahina, at ang koleksyon ng mga pahina ay tinatawag bangko .

Ang mga pahalang at patayong linya ay isang konduktor, sa intersection ng pahalang at mga linyang patayo at ay mga cell ng memorya .

Ano ang binubuo ng isang memory cell?

Ang isang memory cell ay binubuo ng isa field effect transistor at isa kapasitor. Ang kapasitor ay gumaganap bilang isang tindahan ng impormasyon; maaari itong mag-imbak ng isang bit ng data, iyon ay, alinman sa isang lohikal (kapag ito ay sinisingil) o isang lohikal na zero (kapag ito ay pinalabas). Ang transistor ay gumaganap ng isang papel susi ng kuryente, na maaaring may hawak na singil sa kapasitor o nagbubukas para sa pagbabasa.

Pagbabagong-buhay ng memorya

Ang kapasitor, na nagsisilbing isang tindahan ng data, ay may mga mikroskopikong sukat at, bilang isang resulta, isang maliit na kapasidad, at dahil dito, hindi nito maiimbak ang singil na itinalaga dito sa loob ng mahabang panahon, dahil sa self-discharge. Upang labanan ang problemang ito, gamitin pagbabagong-buhay ng memorya, na, kasama sa ilang mga agwat nagbabasa ng mga cell at nagsusulat muli. Salamat sa hindi pangkaraniwang bagay na ito, ang memorya na ito ay tinatawag na dynamic.

Pagbabasa ng memorya

Kung kailangan nating magbasa ng memorya, kung gayon tiyak na linya mga pahina ng memorya, ipinapadala ang isang senyas na nagbubukas ng transistor at pumasa singil ng kuryente, na nakapaloob (o hindi nakapaloob) sa kapasitor sa kaukulang hanay. Ang isang sensitibong amplifier ay konektado sa bawat haligi, na tumutugon sa isang maliit na daloy ng mga electron na inilabas mula sa kapasitor. Ngunit mayroong isang nuance dito - isang signal na inilapat sa isang hilera ng matrix ay nagbubukas ng lahat ng mga transistors ng isang naibigay na hilera, dahil lahat sila ay konektado sa isang naibigay na hilera, at sa gayon ang buong hilera ay nabasa. Batay sa itaas, nagiging malinaw na ang isang linya sa memorya ay ang pinakamababang halaga para sa pagbabasa - imposibleng basahin ang isang cell nang hindi naaapektuhan ang iba.

Ang proseso ng pagbabasa ng memorya ay mapanira, dahil ibinigay ng read capacitor ang lahat ng mga electron nito upang ito ay marinig ng isang sensitibong amplifier. At samakatuwid, pagkatapos ng bawat pagbabasa ng isang linya, dapat itong isulat muli.

Interface ng memorya

Ang bahagi ng interface ng memorya ay dapat may mga linya ng address at linya ng data. Ang mga linya ng address ay tumuturo sa cell address, at ang mga linya ng data ay nagbabasa at nagsusulat ng memorya.

Huwag kalimutang umalis

Para sa noong nakaraang linggo Ipinaliwanag ko sa mga tao nang dalawang beses kung paano nakaayos ang pagtatrabaho sa memorya sa x86, upang hindi na kailangang ipaliwanag sa ikatlong pagkakataon na isinulat ko ang artikulong ito.

At kaya, upang maunawaan ang organisasyon ng memorya, kakailanganin mong malaman ang ilan mga pangunahing konsepto, tulad ng mga rehistro, stack, atbp. Susubukan kong ipaliwanag ito nang detalyado sa daan, ngunit napakaikli dahil hindi ito ang paksa para sa artikulong ito. Kaya simulan na natin.

Tulad ng alam ng isang programmer, kapag nagsusulat ng mga programa ay hindi siya gumagana sa isang pisikal na address, ngunit sa isang lohikal na address lamang. At kung siya ay nag-program sa assembler. Sa parehong C, ang mga cell ng memorya ay nakatago na mula sa programmer sa pamamagitan ng mga pointer, para sa kanyang sariling kaginhawahan, ngunit halos nagsasalita, ang isang pointer ay isa pang representasyon ng isang lohikal na address ng memorya, at sa Java ay walang mga pointer, isang ganap na masamang wika. Gayunpaman, ang isang karampatang programmer ay makikinabang mula sa kaalaman sa kung paano nakaayos ang memorya, hindi bababa sa isang pangkalahatang antas. Sa pangkalahatan, ang mga programmer na hindi alam kung paano gumagana ang isang makina ay talagang nagalit sa akin, kadalasan ito ay Mga programmer ng Java at iba pang PHP guys na may subpar qualifications.

Okay, enough of the sad stuff, let's get down to business.
Isaalang-alang ang address space mode ng programa 32 bit na processor(para sa 64 bits lahat ay pareho)
Ang address space ng mode na ito ay bubuo ng 2^32 memory cell na may numero mula 0 hanggang 2^32-1.
Gumagana ang programmer sa memorya na ito, kung kailangan niyang tukuyin ang isang variable, sasabihin lang niya ang isang memory cell na may address na ganito at ganoon ay maglalaman ng ganito at ganoong uri ng data, habang ang programmer mismo ay maaaring hindi alam kung anong numero ang mayroon ang cell na ito, susulat lang siya ng ganito:
int data = 10;
Maiintindihan ito ng computer sa ganitong paraan: kailangan mong kumuha ng ilang cell na may bilang na daang daan at ilagay ang integer number 10 dito, hindi mo malalaman ang tungkol sa address ng cell 18894, ito ay itatago sa iyo.

Magiging maayos ang lahat, ngunit ang tanong ay lumitaw, paano hinahanap ng computer ang memory cell na ito, dahil maaaring iba ang ating memorya:
Level 3 na cache
Level 2 na cache
1 antas ng cache
pangunahing memorya
hard drive

Ito lang iba't ibang alaala, ngunit madaling mahanap ng computer kung alin sa mga ito ang naglalaman ng aming int data variable.
Ang isyung ito ay nalutas ng operating system kasama ng processor.
Ang buong kasunod na artikulo ay ilalaan sa pagsusuri ng pamamaraang ito.

Sinusuportahan ng arkitekturang x86 ang stack.

Ang isang stack ay isang tuluy-tuloy na lugar ng RAM na nakaayos ayon sa prinsipyo ng isang stack ng mga plato, hindi ka maaaring kumuha ng mga plato mula sa gitna ng stack, maaari mo lamang kunin ang tuktok at maaari ka lamang maglagay ng isang plato sa tuktok ng ang salansan.
Sa processor, ang mga espesyal na code ng makina ay isinaayos para sa pagtatrabaho sa stack, ang pagpupulong mnemonics na ganito ang hitsura:

Itulak operand
itinutulak ang operand sa stack

Pop operand
nagpa-pop ng value mula sa tuktok ng stack at inilalagay ito sa operand nito

Ang isang stack sa memorya ay lumalaki mula sa itaas hanggang sa ibaba, na nangangahulugan na kapag nagdagdag ka ng isang halaga dito, ang address ng tuktok ng stack ay bababa, at kapag ikaw ay lumabas mula dito, ang address ng tuktok ng stack ay tumataas.

Ngayon tingnan natin sandali kung ano ang mga rehistro.
Ito ay mga memory cell sa processor mismo. Ito ang pinakamabilis at pinakamahal na uri ng memorya kapag ang processor ay nagsasagawa ng ilang mga operasyon na may isang halaga o may memorya, direktang kinukuha ang mga halagang ito mula sa mga rehistro.
Ang processor ay may ilang set ng logic, bawat isa ay may sariling machine code at sarili nitong set ng registers.
Mga pangunahing rehistro ng programa Ang mga rehistrong ito ay ginagamit ng lahat ng mga programa upang iproseso ang data ng integer.
Floating Point Unit registers (FPU) Ang mga register na ito ay gumagana sa floating point data.
Mayroon ding mga rehistro ng MMX at XMM, ang mga rehistrong ito ay ginagamit kapag kailangan mong magsagawa ng isang pagtuturo sa isang malaking bilang operand

Tingnan natin ang mga pangunahing rehistro ng programa. Kabilang dito ang walong 32-bit na rehistro pangkalahatang layunin: EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP
Upang ilagay ang data sa isang rehistro, o upang alisin ang data mula sa isang rehistro patungo sa isang memory cell, gamitin ang mov command:

Mov eax, 10
nilo-load ang numero 10 sa eax register.

Mov data, ebx
kinokopya ang numerong nakapaloob sa ebx register sa lokasyon ng memorya ng data.

Ang rehistro ng ESP ay naglalaman ng address ng tuktok ng stack.
Bilang karagdagan sa mga pangkalahatang layunin na rehistro, ang pangunahing mga rehistro ng programa ay kinabibilangan ng anim na 16-bit na mga rehistro ng segment: CS, DS, SS, ES, FS, GS, EFLAGS, EIP
Ang EFLAGS ay nagpapakita ng mga bit, na tinatawag na mga flag, na sumasalamin sa estado ng processor o nagpapakilala sa pag-usad ng mga nakaraang tagubilin.
Ang rehistro ng EIP ay naglalaman ng address ng susunod na pagtuturo na isasagawa ng processor.
Hindi ko ilalarawan ang mga rehistro ng FPU, dahil hindi natin kakailanganin ang mga ito. Kaya ang aming maikling digression tungkol sa mga rehistro at ang stack ay tapos na, bumalik tayo sa memory organization.

Tulad ng naaalala mo, ang layunin ng artikulo ay pag-usapan ang tungkol sa pag-convert ng lohikal na memorya sa pisikal na memorya, sa katunayan, mayroong isang intermediate na yugto at ang kumpletong chain ay ganito:

Lohikal na address --> Linear (virtual) --> Pisikal
Ang buong linear address space ay nahahati sa mga segment. Ang address space ng bawat proseso ay mayroon kahit man lang tatlong segment:
Segment ng code.(naglalaman ng mga utos mula sa aming programa na isasagawa.)
Segment ng data.(Naglalaman ng data, iyon ay, mga variable)
stack segment, na isinulat ko tungkol sa itaas.


Ang linear na address ay kinakalkula gamit ang formula:
linear address = Base address ng segment (sa larawan ito ang simula ng segment) + offset
Segment ng code
Ang base address ng code segment ay kinuha mula sa CS register. Ang halaga ng offset para sa segment ng code ay kinuha mula sa rehistro ng EIP, na nag-iimbak ng address ng pagtuturo, pagkatapos ng pagpapatupad kung saan ang halaga ng EIP ay nadagdagan ng laki ng pagtuturo na ito. Kung ang utos ay tumatagal ng 4 na bait, ang halaga ng EIP ay tataas ng 4 na bait at tumuturo na sa ang mga sumusunod na tagubilin. Ang lahat ng ito ay awtomatikong ginagawa nang walang paglahok ng isang programmer.
Maaaring may ilang mga segment ng code sa ating memorya. Sa aming kaso, isa lamang.
Segment ng data
Ang data ay na-load sa mga rehistrong DS, ES, FS, GS
Nangangahulugan ito na maaaring magkaroon ng hanggang 4 na segment ng data. Sa picture namin siya lang mag-isa.
Ang offset sa loob ng segment ng data ay tinukoy bilang operand ng pagtuturo. Bilang default, ginagamit ang segment na itinuro ng rehistro ng DS. Upang makapasok sa isa pang segment, dapat mong direktang ipahiwatig ito sa command ng prefix sa pagpapalit ng segment.
Stack segment
Ang stack segment na ginamit ay tinutukoy ng halaga ng SS register.
Ang offset sa loob ng segment na ito ay kinakatawan ng ESP register, na tumuturo sa tuktok ng stack, gaya ng naaalala mo.
Ang mga segment sa memorya ay maaaring mag-overlap sa isa't isa, bukod dito base address sa lahat ng mga segment ay maaaring magkasabay, halimbawa, sa zero. Ang degenerate case na ito ay tinatawag na linear memory representation. SA makabagong sistema, ang memorya ay karaniwang nakaayos sa ganitong paraan.

Ngayon tingnan natin ang kahulugan ng mga base address ng isang segment, isinulat ko na ang mga ito ay nakapaloob sa mga rehistro ng SS, DS, CS, ngunit hindi ito ganap na totoo, naglalaman sila ng isang tiyak na 16-bit na tagapili na tumuturo sa isang tiyak na segment descriptor kung saan nakaimbak na ang kinakailangang address.


Ito ang hitsura ng selector; ang labintatlong bit nito ay naglalaman ng index ng descriptor sa talahanayan ng descriptor. Hindi nakakalito na kalkulahin na ang 2^13 = 8192 ay maximum na dami mga deskriptor sa talahanayan.
Sa pangkalahatan, mayroong dalawang uri ng descriptor table GDT at LDT Ang una ay tinatawag na global descriptor table, palaging isa lang nito sa system, ang panimulang address nito, o sa halip ang address ng zero descriptor nito, ay nakaimbak sa 48-bit system register GDTR. At mula sa sandaling magsimula ang system, hindi ito nagbabago at hindi nakikibahagi sa swap.
Ngunit ang mga halaga ng mga deskriptor ay maaaring magbago. Kung ang selector ay naglalaman ng TI bit katumbas ng zero, pagkatapos ay pupunta lang ang processor sa GDT at hahanapin ang index para sa kinakailangang descriptor kung saan maa-access ang segment na ito.
Sa ngayon ang lahat ay simple, ngunit kung ang TI ay 1, nangangahulugan ito na gagamitin ang LDT. Marami sa mga talahanayang ito, ngunit ginagamit ang mga ito sa sa ngayon ay ang isa na ang tagapili ay na-load sa LDTR system register, na, hindi katulad ng GDTR, ay maaaring magbago.
Ang selector index ay tumuturo sa isang descriptor, na hindi na tumuturo sa base address ng segment, ngunit sa memorya kung saan naka-imbak ang lokal na descriptor table, o sa halip ay ang zero na elemento. Well, kung gayon ang lahat ay pareho sa GDT. Sa ganitong paraan, sa panahon ng operasyon, ang mga lokal na talahanayan ay maaaring gawin at sirain kung kinakailangan. Ang mga LDT ay hindi maaaring maglaman ng mga deskriptor sa iba pang mga LDT.
Kaya alam natin kung paano napupunta ang processor sa descriptor, at tingnan natin kung ano ang nilalaman ng descriptor na ito sa larawan:

Ang mga deskriptor ay binubuo ng 8 byte.
Ang mga bit 15-39 at 56-63 ay naglalaman ng linear base address ng segment na inilarawan ng segment na descriptor na ito. Hayaan akong ipaalala sa iyo ang aming formula para sa paghahanap ng isang linear na address:

linear address = base address + offset
Sa simpleng operasyong ito, maaaring ma-access ng processor sa tamang address linear memory.
Tingnan natin ang iba pang mga bit ng descriptor, ang Segment Limit o limitasyon ay napakahalaga, mayroon itong 20-bit na halaga mula 0-15 at 48-51 bits. Tinutukoy ng limitasyon ang laki ng segment. Para sa mga segment ng data at code, available ang lahat ng address na matatagpuan sa pagitan:
[base; base+limit)
Depende sa 55 G-bit (granularity), ang limitasyon ay maaaring masukat sa mga byte na may kaunting halaga na zero at pagkatapos ay ang maximum na limitasyon ay 1 MB, o may halagang 1, ang limitasyon ay sinusukat sa mga pahina, bawat isa ay ay 4 KB. At maximum na laki Magiging 4GB ang segment na ito.
Para sa isang stack segment, ang limitasyon ay nasa hanay:
(base+limit; itaas]
Sa pamamagitan ng paraan, nagtataka ako kung bakit ang base at limitasyon ay napakatulis na matatagpuan sa descriptor. Ang katotohanan ay ang mga x86 processor ay binuo nang ebolusyon at sa mga araw ng 286x ang mga deskriptor ay 8 bit sa kabuuan, habang ang pinakamataas na 2 byte ay nakalaan, ngunit sa kasunod na mga modelo ng processor, na may pagtaas ng kapasidad ng bit, ang mga deskriptor ay lumago din, ngunit upang makatipid. pabalik na pagkakatugma Kinailangan kong iwanan ang istraktura.
Ang halaga ng "itaas" na address ay depende sa 54th D bit, kung ito ay 0, ang tuktok ay 0xFFF(64kb-1), kung ang D bit ay 1, ang tuktok ay 0xFFFFFFFF (4Gb-1)
Mula 41-43 bits ang uri ng segment ay naka-encode.
000 - segment ng data, read only
001 - segment ng data, basahin at isulat
010 - stack segment, read only
011 - stack segment, basahin at isulat
100 - segment ng code, execution lang
101 - segment ng code, basahin at isagawa
110 - segment ng slave code, execution lang
111 - segment ng slave code, execute at read only

44 S bits kung katumbas ng 1 pagkatapos ay inilalarawan ng descriptor ang isang tunay na segment ng RAM, kung hindi man ang halaga ng S bit ay 0.

Ang pinakamahalagang bit ay ang 47th P presence bit. Kung ang isang bit ay katumbas ng 1, nangangahulugan ito na ang segment o lokal na descriptor table ay na-load sa RAM, kung ang bit na ito ay 0, nangangahulugan ito na ang segment na ito ay wala sa RAM, ito ay matatagpuan sa hard disk, isang interrupt ang nangyayari. , isang espesyal na kaso ng pagpapatakbo ng processor ang nagsisimula sa handler espesyal na okasyon, na naglo-load ng gustong segment mula sa hard drive sa memorya, kung ang P bit ay 0, kung gayon ang lahat ng mga field ng descriptor ay mawawalan ng kahulugan at magiging libre upang mag-imbak ng impormasyon ng serbisyo sa kanila. Matapos makumpleto ng handler ang trabaho nito, ang P bit ay nakatakda sa 1, at ang descriptor ay na-access muli, ang segment na kung saan ay nasa memorya na.

Tinatapos nito ang pag-convert ng isang lohikal na address sa isang linear, at sa tingin ko ay dapat na tayong tumigil doon. Sa susunod na sasakupin ko ang ikalawang bahagi ng linear sa pisikal na conversion.
At sa palagay ko rin ay sulit na pag-usapan ang tungkol sa pagpasa ng mga argumento ng function, at tungkol sa paglalagay ng mga variable sa memorya, upang mayroong ilang koneksyon sa katotohanan, dahil ang paglalagay ng mga variable sa memorya ay isang bagay na kailangan mong harapin sa iyong trabaho, at hindi lamang para saan -theoretical speculations programmer ng system. Ngunit nang walang pag-unawa kung paano gumagana ang memorya, imposibleng maunawaan kung paano nakaimbak ang parehong mga variable sa memorya.
Sa pangkalahatan, umaasa ako na ito ay kawili-wili at makita kang muli.

Ministri ng Edukasyon at Agham ng Rehiyon ng Nizhny Novgorod

Badyet ng estado institusyong pang-edukasyon

karaniwan bokasyonal na edukasyon

"Bor Provincial College"

Espesyalidad 230701 Inilapat na computer science(ayon sa industriya)

Abstract

Sa paksa: Istraktura ng RAM.

Disiplina: Mga operating system at kapaligiran.

Nakumpleto:

mag-aaral gr. IT-41

Rodov A.E.

Sinuri:

Markov A.V.

Urban na distrito ng Bor

201 5

Panimula

RAM(mula sa English Random Access Memory) memory na may random na pag-access. RAM ( random access memory)pabagu-bago ng isip bahagi ng sistema memorya ng computer, kung saan iniimbak ang executable file habang tumatakbo ang computer. code ng makina ( mga programa), at

Baguhin

Sheet

Dokumento no.

Lagda

Petsa

Sheet

PPP PI 23.00.00 TO

input, output intermediate data na naproseso ng processor.

  1. Istraktura ng RAM

Ang RAM ay binubuo ng mga cell, na ang bawat isa ay maaaring maglaman ng isang yunit ng impormasyon - isang machine word. Ang bawat cell ay may dalawang katangian: address at nilalaman. Sa pamamagitan ng rehistro ng address ng microprocessor, maaari mong ma-access ang anumang memory cell.

  1. Modelo ng segmental na memorya

Noong unang panahon, sa bukang-liwayway ng kapanganakan kagamitan sa kompyuter, ang RAM ay napakaliit at 2 byte (ang tinatawag na "salita") ay ginamit upang tugunan ito. Ang diskarte na ito ay naging posible upang matugunan ang 64 KB ng memorya, at ang pagtugon ay linear - isang solong numero ang ginamit upang ipahiwatig ang address. Nang maglaon, habang bumuti ang teknolohiya, napagtanto ng mga tagagawa na posibleng suportahan ang mas malaking halaga ng memorya, ngunit upang gawin ito kailangan nilang gawing mas malaki ang laki ng address. Para sa pagiging tugma sa nakasulat na software, napagpasyahan na gawin ito: ang pagtugon ay dalawang bahagi na ngayon (segment at offset), bawat isa ay 16-bit, at mga lumang programa, dahil gumamit sila ng isang 16-bit na bahagi at hindi nila alam kahit ano tungkol sa mga segment, patuloy na magtrabaho

Baguhin

Sheet

Dokumento no.

Lagda

Petsa

Sheet

PPP PI 23.00.00 TO

Lohikal na istraktura ng RAM

Ang address space ay isang hanay ng mga address na maaaring mabuo ng processor. Para saan? Magandang tanong. Ang katotohanan ay ang bawat memory cell ay may isang address. At upang mabasa (o maisulat) ang impormasyong nakaimbak dito, kailangan mong i-access ito sa address nito. Ang mga address ay nahahati sa virtual (lohikal) at pisikal. Mga pisikal na address ito ay tunay na mga address ng tunay na memory cell. Ang mga programa ay malalim na kahanay sa mga naturang address, dahil gumagana ang mga ito gamit ang mga simbolikong pangalan, na pagkatapos ay iko-convert sa mga virtual na address ng tagasalin. Pagkatapos ang mga virtual na address ay na-convert sa mga pisikal.

Ang mga lohikal na address ay kinakatawan sa hexadecimal form at binubuo ng dalawang bahagi. Logically, ang RAM ay nahahati sa mga segment. Kaya ang unang bahagi ng lohikal na address ay ang simula ng segment, at ang pangalawa ay ang offset mula sa simulang ito (segment, offset)

Ang lohikal na istraktura ay nahahati sa 5 mga zone:

1. Karaniwang memorya pangunahing memorya;

Magsisimula sa address na 00000 (0000:0000) at aabot sa 90000 (9000:0000). Tumatagal ito ng 640 KB. Una sa lahat, ang interrupt vector table ay na-load sa lugar na ito, simula sa 00000 at sumasakop sa 1 KB, na sinusundan ng data mula sa BIOS (timer counter, keyboard buffer, atbp.), at pagkatapos ay lahat ng uri ng 16-bit na programa DOS (para sa kanila, ang 640 KB ay isang hadlang kung saan ang mga 32-bit na programa lamang ang maaaring tumalon). Para sa data BIOS at 768 byte ang inilalaan.
2. UMA (Upper Memory Area ) itaas na memorya;

Nagsisimula sa address A0000 at hanggang sa FFFFF . Sinasakop nito ang 384 KB. Ang impormasyong nauugnay sa hardware ng computer ay na-load dito. UMA maaaring hatiin sa 3 bahagi ng 128 KB bawat isa. Ang unang bahagi (mula A0000 hanggang BFFFF ) ay inilaan para sa memorya ng video. Sa susunod na bahagi (mula sa Mula 0000 hanggang DFFFF ) naglo-load ang mga program BIOS mga adaptor. Huling bahagi (mula sa E 0000 hanggang FFFFF ) nakalaan para sa sistema BIOS . Ang katotohanan ay ang huling 128 KB ay hindi ganap na ginagamit. Sa karamihan ng mga kaso, sa ilalim BIOS ang huling 64 KB lang ang ginagamit. Ang libreng bahagi U.M.B. minamaneho ng driver EMM 386.EXE at ginagamit sa mga pangangailangan operating system.
3. HMA (High Memory Area) mataas na memory area;

Baguhin

Sheet

Dokumento no.

Lagda

Petsa

Sheet

PPP PI 23.00.00 TO

Kasaysayan ng rehiyon H.M.A. umaabot hanggang sa 80286 processor, o sa halip sa isang error sa circuitry nito. Nasabi ko na na ang 8086 at 8087 na mga processor ay may 20-bit address bus, nagtrabaho sa totoong mode at maaaring makipag-ugnayan sa address hangga't maaari FFFFF (FFFF :000 F ). Ngunit ang 80286 processor ay mayroon nang 24-bit address bus, gumana sa tunay at protektadong mga mode at maaaring tumugon sa hanggang 16 MB ng memorya.
4. XMS (Extended Memory Specification ) karagdagang memorya;

Upang magtrabaho sa XMS gamit ang DOS , isa pang mode ang binuo para sa mga processor - virtual. DOS hindi malalampasan ang 640 KB na hadlang, virtual mode pinapayagan kang masira karagdagang memorya sa mga bahagi sa pamamagitan ng

1 MB. Ang bawat bahagi ay puno ng isang programa DOS at doon sila ay niluto sa tunay na mode, ngunit nang hindi nakakasagabal sa isa't isa sila ay ipapatupad nang sabay-sabay. Ang mga 32-bit na application ay walang pakialam sa 640 KB na hadlang. XMS responsable para sa pagsasalin ng driver ng processor mode EMM 386.EXE , at para sa organisasyon ng rehiyon mismo HIMEM. SYS . Tingnan kung ano ang nangyayari sa iyong Posible ang XMS gamit ang SysInfo mula sa Norton Utilities suite.
5. EMS (Expanded Memory Specification) pinalawak na memorya;

Ang lugar na ito ay matatagpuan sa itaas na memorya at sumasakop ng halos 64 KB. Ito ay ginamit lamang sa mga lumang computer na may RAM dati

1 MB. Dahil sa pagtutukoy nito, ito ay medyo mabagal na lugar. Ang katotohanan ay ang pinalawig na memorya ay isa sa maraming lumipat na mga segment. Matapos mapuno ang segment, ang ginamit na segment ay papalitan ng bago. Ngunit maaari ka lamang magtrabaho sa isang segment, at ito, dapat mong maunawaan mismo, ay hindi napakahusay, maginhawa at mabilis. Karaniwan ang unang segment EMS matatagpuan sa D000.

Lohikal na istraktura ng RAM sa graphical na anyo.

Baguhin

Sheet

Dokumento no.

Lagda

Petsa

Sheet

PPP PI 23.00.00 TO

4. DRAM Dynamic Random Access Memory

DRAM - ito ay isang napakalumang uri ng RAM chip, na hindi nagamit nang mahabang panahon. Sa ibang paraan DRAM ito dynamic na memorya na may random sampling order. Minimum na yunit impormasyon kapag nag-iimbak o nagpapadala ng data sa isang computer ay medyo. Ang bawat bit ay maaaring magkaroon ng dalawang estado: on (oo, 1) o off (hindi, 0). Ang anumang dami ng impormasyon sa huli ay binubuo ng mga bit na naka-on at naka-off. Kaya, upang mai-save o maipadala ang anumang dami ng data, kinakailangan na mag-imbak o magpadala ng bawat bit, anuman ang estado nito, ng data na ito.

Upang mag-imbak ng mga piraso ng impormasyon sa RAM mayroong mga cell. Ang mga cell ay binubuo ng mga capacitor at transistor. Narito ang isang tinatayang at pinasimple na diagram ng isang DRAM cell:

Ang bawat cell ay maaari lamang mag-imbak ng isang bit. Kung ang cell capacitor ay sisingilin, nangangahulugan ito na ang bit ay naka-on; Kung kailangan mong mag-imbak ng isang byte ng data, kakailanganin mo ng 8 cell (1 byte = 8 bits). Ang mga cell ay matatagpuan sa mga matrice at bawat isa sa kanila ay may sariling address, na binubuo ng isang row number at isang column number.

Baguhin

Sheet

Dokumento no.

Lagda

Petsa

Sheet

PPP PI 23.00.00 TO

Ngayon tingnan natin kung paano nangyayari ang pagbabasa. Una, ang signal ng RAS (Row Address Strobe) ay inilalapat sa lahat ng mga input; ito ang address ng row. Pagkatapos nito, ang lahat ng data mula sa linyang ito ay isusulat sa buffer. Pagkatapos ang CAS (Column Address Strobe) signal ay inilapat sa rehistro ito ay isang signal ng haligi at ang bit na may kaukulang address ay napili. Ang bit na ito ay ibinibigay sa output. Ngunit sa panahon ng pagbabasa, ang data sa mga cell ng read line ay nawasak at dapat na muling isulat sa pamamagitan ng pagkuha nito mula sa buffer.

Ngayon ang pagre-record. Ang WR (Write) signal ay inilapat at ang impormasyon ay ibinibigay sa column bus hindi mula sa rehistro, ngunit mula sa pagpasok ng impormasyon memorya sa pamamagitan ng switch, tinukoy sa pamamagitan ng address hanay. Kaya, ang pagpasa ng data kapag isinulat ay tinutukoy ng kumbinasyon ng mga signal ng address ng column at row at ang pahintulot na magsulat ng data sa memorya. Kapag nagsusulat, ang data mula sa row register ay hindi output.

Dapat itong isaalang-alang na ang mga matrice na may mga cell ay nakaayos tulad nito:

Baguhin

Sheet

Dokumento no.

Lagda

Petsa

Sheet

PPP PI 23.00.00 TO

Nangangahulugan ito na hindi isang bit ang babasahin sa isang pagkakataon, ngunit ilang. Kung mayroong 8 matrice na matatagpuan sa parallel, pagkatapos ay isang byte ang babasahin nang sabay-sabay. Ito ay tinatawag na bit depth. Ang bilang ng mga linya kung saan ang data ay ipapadala mula sa (o sa) parallel matrice ay tinutukoy ng lapad ng input/output bus ng microcircuit.
Kapag pinag-uusapan ang pagpapatakbo ng DRAM, dapat isaalang-alang ang isang punto. Ang buong punto ay ang mga capacitor ay hindi maaaring mag-imbak ng singil nang walang katapusan at sa kalaunan ay "maubos." Samakatuwid, ang mga capacitor ay kailangang ma-recharge. Ang recharging operation ay tinatawag na Refresh o regeneration. Ang operasyong ito ay nangyayari humigit-kumulang bawat 2 ms at kung minsan ay tumatagal ng hanggang 10% (o higit pa) ng oras ng pagtatrabaho ng processor.

Ang pinakamahalagang katangian Ang DRAM ay bilis, o mas madaling sabihin, tagal ng ikot + latency + oras ng pag-access, kung saan ginugol ang tagal ng cycle sa paglilipat ng data, latency paunang pag-install mga address ng row at column, at ang oras ng pag-access ay ang oras ng paghahanap para sa cell mismo. Ang basurang ito ay sinusukat sa nanoseconds (isang bilyong bahagi ng isang segundo). Ang mga modernong memory chip ay may bilis na mas mababa sa 10 ms.

Ang RAM ay kinokontrol ng isang controller na matatagpuan sa chipset motherboard, o sa halip sa bahaging iyon na tinatawag na North Bridge.

Baguhin

Sheet

Dokumento no.

Lagda

Petsa

Sheet

PPP PI 23.00.00 TO

At ngayon, nang maunawaan kung paano gumagana ang RAM, alamin natin kung bakit ito kinakailangan. Pagkatapos ng processor, ang RAM ay maaaring ituring na pinakamabilis na aparato. Samakatuwid, ang pangunahing palitan ng data ay nangyayari sa pagitan ng dalawang device na ito. Lahat ng impormasyon sa personal na computer nakaimbak sa hard drive. Kapag binuksan mo ang computer, ang mga driver ay nakasulat sa RAM (Random Access Memory) mula sa turnilyo, mga espesyal na programa at mga elemento ng operating system. Pagkatapos iyong mga programa at application na iyong ilulunsad ay ire-record doon. Kapag isinara mo ang mga program na ito, mabubura ang mga ito sa RAM. Ang data na naitala sa RAM ay inililipat sa CPU (Central Processing Unit), kung saan ito pinoproseso at isinusulat pabalik. At kaya sa lahat ng oras: nagbigay sila ng utos sa processor na kumuha ng mga bit sa ganito at ganoong mga address, kahit papaano ay iproseso ang mga ito doon at ibalik ang mga ito sa kanilang lugar o isulat ang mga ito sa isang bago - ginawa niya iyon.

Ang lahat ng ito ay mabuti hangga't mayroong sapat na mga cell ng RAM. Paano kung hindi? Pagkatapos ay papasok ang swap file. Ang file na ito ay matatagpuan sa hard drive at lahat ng bagay na hindi magkasya sa mga cell ng RAM ay nakasulat doon. Dahil ang bilis ng turnilyo ay makabuluhang mas mababa kaysa sa RAM, ang pagpapatakbo ng paging file ay lubos na nagpapabagal sa system. Bilang karagdagan, binabawasan nito ang kahabaan ng buhay ng hard drive mismo.

Ang pagtaas ng dami ng memorya ay hindi humahantong sa pagtaas ng pagganap nito. Ang pagpapalit ng laki ng memorya ay hindi makakaapekto sa operasyon nito sa anumang paraan. Ngunit kung isasaalang-alang natin ang pagpapatakbo ng system, kung gayon ito ay ibang bagay. Kung mayroon kang sapat na RAM, ang pagtaas ng volume ay hindi hahantong sa pagtaas ng bilis ng system. Kung walang sapat na mga cell ng RAM, ang pagtaas ng kanilang bilang (sa madaling salita, pagdaragdag ng bago o pagpapalit ng luma ng bago na may mas malaking kapasidad ng memorya) ay magpapabilis sa system.

Baguhin

Sheet

Dokumento no.

Lagda

Petsa

Sheet

PPP PI 23.00.00 TO

Baguhin

Sheet

Dokumento no.

Lagda

Petsa

Sheet

PPP PI 23.00.00 TO

Mga mapagkukunan sa Internet

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/

Mga sanggunian

Praktikal na gabay tagapangasiwa ng system. (2012)

Andrew Tanenbaum, Todd Austin - Arkitektura ng Computer (2013)

Memory cell Ang memorya ng computer ay binubuo ng mga indibidwal na "particle" ng mga bit, pinagsama sa mga grupo (mga rehistro) ng 8 bits (bytes). Ang 1 byte ay isang elementarya na yunit ng memorya. Ang bawat byte ay may sariling numero (address), at mga nilalaman binary code. Kapag ang processor ay nagpoproseso ng impormasyon, nakakahanap ito ng isang address sa memorya ang gustong cell, nagbabasa mula sa mga nilalaman, nagsasagawa mga kinakailangang aksyon at isinusulat ang resulta sa isa pang memory cell. Ang memory cell ay isang pangkat ng magkakasunod na byte ng internal memory. Mga nilalaman ng machine word ng memory cell Lapad at laki ng memory cell salita ng makina sa mga bit na katumbas ng kapasidad ng processor






High-speed memory, ipinatupad sa form elektronikong circuit. Available ang RAM para sa pagbabasa at pagsusulat ng impormasyon. Nasa RAM ang gawaing isinagawa sa kasalukuyang sandali ang programa at ang data na kinakailangan para dito, ang data sa RAM ay maaaring i-edit, tanggalin, idagdag. Ito ay pansamantalang memorya ng imbakan. Ang RAM ay nag-iimbak ng impormasyon lamang sa isang sesyon ng pagtatrabaho sa isang computer - pagkatapos i-off ang computer mula sa network, ang data na nakaimbak sa RAM ay mawawala magpakailanman. Ang RAM ay isang pabagu-bago ng isip na aparato. Kapasidad modernong mga modelo mula 512 hanggang 1024 MB. RAM – random access memory (RAM – random access memory).


ROM - permanenteng memorya (ROM - read only memory - read-only memory). Sa maraming mga computer, ang ROM ay ipinatupad bilang isang hiwalay na chip, kung saan, sa panahon ng pagmamanupaktura, inilalagay ang mga pangunahing utos na nagsasagawa ng paunang pakikipag-ugnayan sa pagitan ng hardware at software. Ang ganitong uri ng memorya ay read-only. Pagkatapos i-off ang computer, ang impormasyon ay nai-save. Ang ROM ay isang non-volatile device. Ang ROM ay naglalaman ng bahagi ng operating room Mga sistema ng BIOS(Basic Input-Output System).


Memorya ng cache – intermediate memory sa pagitan ng RAM at ROM “Cache” - lugar ng pagtatago, bodega (salitang Ingles). Ginagamit upang mapabilis ang computer. Ang "secrecy" ng cache ay nakasalalay sa katotohanan na ito ay hindi nakikita ng gumagamit at ang data na nakaimbak doon ay hindi naa-access sa software ng application. Ang paggamit ng ganitong uri ng internal memory ay binabawasan ang bilang ng mga access sa hard drive. Ang kawalan ng cache memory ay maaaring makabuluhang bawasan (20-30%) pangkalahatang pagganap kompyuter.


Non-volatile memory (CMOS memory, Complementary Metal-Oxid-Semicondactor) Iba't ibang pagpipilian mga configuration ng computer, gaya ng numero at uri mga disk drive, uri ng video adapter, pagkakaroon ng isang coprocessor at ilang iba pang data ay naka-imbak sa tinatawag na CMOS memory. Ang CMOS memory chip ay naglalaman din ng ordinaryong elektronikong relo. Salamat sa kanila, maaari mong malaman anumang oras kasalukuyang petsa at oras. Upang matiyak na kapag ang kapangyarihan ng computer ay naka-off, ang mga nilalaman ng CMOS memory ay hindi mabubura, at ang orasan ay patuloy na nagbibilang ng oras, ang CMOS memory chip ay pinapagana ng isang espesyal na maliit na baterya o nagtitipon, na matatagpuan din sa system board