Bahay / Miscellaneous / Ano ang ECC RAM? Buffered RAM - ano ito? Mga sequential functional unit. Mga Register at Register Memory Register Memory

Ano ang ECC RAM? Buffered RAM - ano ito? Mga sequential functional unit. Mga Register at Register Memory Register Memory

Alam ng lahat na mayroon ang mga modernong computing device RAM, kung saan ang impormasyon ay nakaimbak lamang sa panahon ng operasyon. Ang RAM ay ginawa sa anyo ng mga module na may microcircuits (chips) na mayroong isang set ng mga cell para sa pag-iimbak ng bit na impormasyon. Ang bawat memory cell ay idinisenyo upang mag-imbak ng zero o isa. 8 tulad ng mga cell ay nag-iimbak ng 8 bits (ito ay 1 byte na). Ang ganitong mga chip ay ginawa batay sa mga semiconductor. Ngunit ang pagpapatupad ng mga module at PC ay may isang bilang ng mga seryosong pagkakaiba, na isasaalang-alang namin sa artikulong ito.

Parity memory.

Sa isang maagang yugto sa pag-unlad ng teknolohiya ng computer, ang teknolohiya para sa paggawa ng mga elemento ng semiconductor ay hindi pa napakahusay na binuo. Samakatuwid, may posibilidad ng pagkawala ng impormasyon kapag sumulat sa anumang memory cell: nagsulat sila ng isa sa loob nito, ngunit hindi ito naitala (zero ang nanatili). Upang kahit papaano makontrol ang proseso ng pagsulat sa memorya, isang simpleng teknolohiya sa pag-verify ng data ang naimbento.

Bago magsulat ng isang byte (8 bits), kinakalkula ang kabuuan ng lahat ng bits sa byte na ito. Ngunit hindi ang buong checksum ay naalala (upang i-save ang memorya), ngunit ang huling bit lamang nito, ang halaga nito (zero o isa) ay naalala sa isang lugar na espesyal na itinalaga para dito. Ang halaga ng bit na ito (0 o 1) ay nakasalalay sa kung ang kabuuan ng mga bit ay pantay o kakaiba kapag idinagdag. Samakatuwid, ang bit na ito ay naging kilala bilang parity bit.

Matapos isulat ang orihinal na byte sa mga cell ng memorya, ang kabuuan ng mga bit ng naturang naka-imbak na byte ay kinakalkula, at ang parity ng kabuuan na ito ay inihambing sa nauna (ang halaga nito ay naka-imbak sa parity bit). Kung ang mga parities ng mga checksum ay tumugma, pagkatapos ay itinuturing na ang pagsulat sa memorya ay matagumpay. At kung hindi sila tumugma, may nabuong mensahe ng error. Ang teknolohiyang ito ay tinatawag na parity control.

Memorya na walang pagkakapantay-pantay.

Sa paglipas ng panahon, nagsimulang lumitaw ang mas maaasahang microcircuits. Ang posibilidad ng mga pagkakamali sa kanila ay naging mas kaunti. Kasabay nito, nagkaroon ng pagbawas sa halaga ng mga elektronikong bahagi. Ang produksyon at pagbebenta ng mga computer ay naging napakalaking. Para sa ilang mga gumagamit, ang mga error sa pagpapatakbo ng mga computer ay hindi kritikal. Samakatuwid, ang mga modelo ay nagsimulang gawin sa merkado na gumamit ng memorya nang walang pagkakapantay-pantay. Ang pag-alis ng "dagdag" na ikasiyam na bit (para sa bawat byte) at ang "labis na" mga gastos sa pagkalkula ng mga checksum ay naging posible upang medyo bawasan ang gastos ng mga computer at gawing naa-access ang mga ito sa masa ng mga mamimili. Ang ganitong mga computer ay naging napakapopular sa mga desktop (desktop) system.

Gayunpaman, sa ilang mga industriya, mga sistema ng kahalagahan ng pagtatanggol ng militar at sektor ng pagbabangko, ang hindi pagkakatanggap ng mga pagkakamali sa mga sistema ng pag-compute ay nananatiling isa sa pinakamahalagang gawain.

Memorya na may kontrol at pagwawasto ng error.

Ang teknolohiya ng parity control ay hindi perpekto. Ito ay hindi makita, halimbawa, ang "pagkawala" ng 2 bits sa parehong oras (ang parity ay hindi nagbabago sa kasong ito). Samakatuwid, napagpasyahan na ang bawat bit ng data na nakasulat sa memorya ay dapat isama hindi sa isang checksum, ngunit sa ilang. Sa ganitong sistema ng kontrol, naging posible na sabay-sabay na makita ang ilang mga error, ang kanilang mga address, at, bilang karagdagan, iwasto ang mga error na ito. Ang teknolohiyang ito ay tinatawag na Error Correction Code (ECC), dahil kinakalkula ang isang code na nagpapahintulot sa pagwawasto ng error.

Siyempre, ang mga karagdagang rehistro ay kinakailangan upang mag-imbak ng mga checksum, na ginagawang mas mahal ang mga module ng memorya, ngunit sa pangkalahatan, ang mga system na batay sa memorya ng ECC ay mas mapagparaya. Ang ganitong mga memory module ay pinaka-malawak na ginagamit sa mga sistema ng server.

Ang memorya na may parity at ECC na teknolohiya ay maaaring gamitin sa parehong server at desktop system. Sa unang kaso, ito ay nabibigyang katwiran sa pamamagitan ng kahalagahan ng mga gawain na nalutas (kung saan ang halaga ng pinakamaliit na pagkakamali ay napakataas), at sa pangalawang kaso ay hindi ito palaging ipinapayong (mula sa isang pang-ekonomiyang punto ng view: pagkatapos ng lahat, para gumamit ng mga module na may kontrol ng error, kailangan mong magkaroon ng mas mahal na motherboard na sumusuporta sa teknolohiyang ito, kung hindi, hindi gagana ang error control).

Naka-buffer na memorya.

Sa mga sistema ng pag-compute, ang kontrol sa pagsulat / pagbabasa papunta at mula sa memorya ay isinasagawa ng isang espesyal na controller ng memorya. Ang controller na ito ay dapat magkaroon ng access sa lahat ng memory cell at tiyakin ang paglilipat ng impormasyon mula sa bus patungo sa memorya at vice versa. Ang mga desktop system ay kadalasang gumagamit ng mga processor na may pinagsamang memory controller. Ang ilang mga disadvantage ng pagpapatupad na ito ay ang mga sumusunod:

Mayroon lamang isang controller, ngunit maraming mga memory cell ang kailangang kontrolin - may limitasyon sa bilang ng sabay-sabay na inihatid na mga memory bank habang pinapanatili ang mataas na pagganap;

Sa isang data bus mula sa processor o iba pang mga bahagi ng computer, kinakailangan na ilipat ang parehong mga control command at data sa lahat ng ginamit na mga module ng memorya (ang pagkarga sa bus ay tumataas).

Upang mapabuti ang sitwasyon, napagpasyahan na ipatupad ang bahagi ng mga function ng controller sa bawat memory module. Upang gawin ito, ang isang espesyal na chip ay isinama sa module ng memorya, na nagsisilbing isang buffer, na tumatanggap ng mga utos ng control at setting ng address mula sa gitnang processor (sa kasong ito, ang daloy ng data sa memorya ay sumasabay sa bus na kahanay sa utos. daloy). Ito ay kung paano ipinanganak ang buffered memory.

Nang maglaon, nagsimulang ipatupad ang mga function ng pagwawasto ng error (ECC) sa buffer na ito, at naging posible rin na madagdagan ang memorya nang walang karagdagang pagkarga sa data bus. Ang mga karagdagang chip para sa pagpapatupad ng buffer ay naging kilala bilang mga rehistro, at ang memorya mismo ay naging kilala bilang nakarehistrong memorya.

Sa paglipas ng panahon, ang ganap na buffered na mga module ng memorya (FB - ganap na buffered) ay lumitaw din, sa buffer (rehistro) kung saan hindi lamang ang mga signal ng kontrol, kundi pati na rin ang data ay nagsimulang ilipat nang sunud-sunod sa isang stream. Kapag gumagamit ng isang intermediate buffer, mayroong ilang paghina sa pagpapatakbo ng memorya, dahil ang isang intermediate cycle ay kinakailangan upang sumulat sa buffer.

Ang nasabing memorya ay nagkakahalaga ng higit pa kaysa sa hindi rehistradong memorya dahil sa pagkakaroon ng isang karagdagang register chip at ang paggamit ng mga kumplikadong teknolohiya. Ngunit, dahil sa ergonomya nito, ang posibilidad ng pagtaas ng lakas ng tunog, pati na rin dahil sa kontrol ng error, malawak itong ginagamit sa mga sistema ng server, kung saan ang matatag at walang error na trabaho na may malaking halaga ng data ay napakahalaga.

Mga isyu sa compatibility.

Ang mga buffered memory module sa mga unang yugto ng kanilang pag-unlad ay ginamit sa parehong mga desktop at server system, ngunit ang pagdating ng nakarehistrong memorya ay inalis ang posibilidad na gamitin ito sa isang PC.

Sa mga desktop system, ang paggamit ng rehistradong memorya ay hindi praktikal (sobrang gastos), at kadalasang imposible, dahil karamihan sa mga motherboard na ginagamit sa mga desktop ay hindi sumusuporta sa rehistradong memorya. Ang mga motherboard na ginagamit sa mga modernong sistema ng server, sa kabaligtaran, ay idinisenyo upang gumana lamang sa nakarehistrong memorya, dahil ang pagtaas ng kapasidad (nang hindi binabago ang platform) at ang kakayahang kontrolin ang mga error ay mas mahalagang mga kadahilanan para sa mga server kaysa sa gastos.

Kadalasan, kapag pumipili ng mga bahagi, nakatagpo kami ng iba't ibang hindi maintindihan na mga termino at konsepto. Kapag pumipili ng RAM, maaari itong maging DDR, DDR2, DDR3, DDR4, RDRAM, RIMM, atbp. Kung ang lahat ay higit pa o hindi gaanong malinaw sa mga pangunahing uri ng RAM, at ang suporta para sa bawat uri ay ipinahiwatig sa paglalarawan para sa motherboard, kung gayon ang isang parameter bilang ECC ay nagtataas ng ilang mga katanungan para sa marami. Ano ang memorya ng ECC? Posible bang gumamit ng ECC RAM sa isang computer sa bahay at ano ang pangunahing pagkakaiba sa pagitan ng ECC RAM at non-ECC RAM?

Ano ang memorya ng ECC?

Ito ay isang espesyal na uri ng RAM na may built-in na hardware sa pagwawasto ng error. Ang nasabing mga memory module ay partikular na binuo para sa mga server, kung saan ang mga kinakailangan para sa kawastuhan ng data at ang pagiging maaasahan ng kanilang pagproseso ay mas mataas kaysa sa mga personal na computer.

Awtomatikong kinikilala ng ECC-Ram ang mga kusang pagbabago sa data sa mga bloke ng imbakan, iyon ay, mga error na naganap. Regular - ang desktop memory na walang suporta para sa mga mekanismo ng pagwawasto ay tinatawag na non-ECC.

Ano ang kaya ng ECC memory at paano ito gumagana?

Ang memorya sa pagwawasto ng error ay maaaring makakita at magtama ng 1 bit ng binagong data sa bawat machine word. Ano ang ibig sabihin nito? Kung ang data sa pagitan ng pagsulat at pagbabasa ay binago para sa ilang kadahilanan (iyon ay, isang error ang naganap), pagkatapos ay itatama ng ECC RAM ang halaga sa tama. Ang ganitong pag-andar ay nangangailangan ng suporta mula sa controller ng RAM. Ang suportang ito ay maaaring ayusin ng motherboard chipset, ang built-in na RAM controller sa mga modernong processor.

Ang algorithm ng pagwawasto ng error ay batay sa Hamming code, ngunit ang iba pang mga algorithm ay ginagamit upang itama ang higit sa isang error. Sa pagsasagawa, ginagamit ang mga memory module, kung saan para sa bawat 8 memory chips, isa pang chip ang idinagdag na nag-iimbak ng mga ECC code (8 bits para sa bawat 64 bits ng pangunahing memorya).

Bakit nasira ang halaga sa mga cell ng memorya ng RAM?

Ang isa sa mga pangunahing sanhi ng pagbaluktot ng data ay ang mga cosmic ray. Bagama't tayo ay nasa Earth sa ilalim ng proteksyon ng atmospera, ang mga cosmic ray ay nagdadala ng ilang elementarya na particle na maaaring makaapekto sa electronics, kabilang ang memorya ng computer. Sa ilalim ng pagkilos ng enerhiya ng mga particle na ito, posible ang pagbabago sa estado ng memory cell, na humahantong sa pagbaluktot ng data at mga error. Kapansin-pansin, ang pagkakalantad sa mga cosmic ray ay tumataas sa altitude, kaya ang mga high-altitude na computer system ay nangangailangan ng mas mahusay na proteksyon.

Paano Gumagana ang ECC Memory

Ang isa sa mga mekanismo ng pagkontrol ng error sa RAM ay ang paggamit ng parity technology, na nagpapahintulot sa iyo na ayusin ang katotohanan ng isang error sa data, ngunit hindi pinapayagan kang iwasto ang data.

Ginagamit ang hamming code para sa pagwawasto ng ECC. Pinoprotektahan ng ECC ang mga computer system mula sa maling operasyon dahil sa pagkasira ng memorya at binabawasan ang posibilidad ng isang kritikal na pagkabigo ng system. Ang memorya na may suporta sa ECC ay 2-3% na mas mabagal kaysa sa hindi ECC na memorya depende sa application.

Mga dahilan para gamitin ang ECC memory

Walang layuning dahilan para gumamit ng ECC-enabled na RAM sa mga desktop computer. Dahil ang posibilidad ng mga error sa data na nagaganap ay napakaliit, sa mga normal na senaryo ng paggamit ng PC, ito ay lubos na hindi malamang na ang isang error ay magdulot ng mga problema o pag-crash sa PC. Ang pinakamasamang senaryo ay ang hitsura asul na screen BSOD kamatayan. Bilang karagdagan, ang paggamit ng ECC RAM ay nahahadlangan ng katotohanan na ang mga desktop processor at mga motherboard karamihan ay hindi sumusuporta sa ganitong uri ng RAM.

Ang paggamit ng RAM na may ECC error correction ay may kaugnayan para sa server at corporate segment, kung saan ang mga kinakailangan para sa fault tolerance at reliability ay napakataas, at ang kawastuhan ng data ay maaaring makaapekto sa mga resulta ng mga kalkulasyon at ang pagpapatakbo ng system sa kabuuan. .

Kumusta ka? -

Maaaring makilala tatlo pangunahing uri ng memorya na ginagamit sa mga microcontroller:

● memorya mga programa, na isang read-only na memorya na idinisenyo upang mag-imbak ng program code at constants. Ang memorya na ito ay hindi nagbabago ng nilalaman nito sa panahon ng pagpapatupad ng programa;

● memorya data, idinisenyo upang mag-imbak ng mga variable (mga resulta) sa panahon ng pagpapatupad ng programa;

magparehistro memorya na binubuo ng mga panloob na rehistro ng microcontroller. Isaalang-alang ang mga tampok ng bawat isa sa mga uri ng memorya.

Memorya ng programa.

Ang pangangailangan para sa naturang memorya ay dahil sa ang katunayan na ang microcontroller ay hindi naglalaman ng mga naturang memory device bilang isang hard drive sa computer kung saan na-load ang executable program. Samakatuwid, ang program code ay dapat na permanenteng naka-imbak sa microcontroller.

Ang lahat ng mga uri ng memorya ng programa ay sa non-volatile memorya, o read-only memory (ROM), ang mga nilalaman nito ay pinapanatili pagkatapos patayin ang microcontroller.

Sa panahon ng pagpapatupad, ang programa ay binabasa mula sa memorya na ito, at ang control unit (command decoder) ay nagbibigay ng pag-decode nito at nagsasagawa ng mga kinakailangang operasyon. Ang mga nilalaman ng memorya ng programa ay hindi maaaring baguhin (reprogrammed) sa panahon ng pagpapatupad ng programa. Samakatuwid, ang pag-andar ng microcontroller ay hindi maaaring magbago hangga't ang mga nilalaman ng memorya ng programa nito ay nabura (kung maaari) at na-reprogram (napuno ng mga bagong tagubilin).

Dapat tandaan na ang bitness ng microcontroller (8, 16 o 32 bits) ay ipinahiwatig alinsunod sa bitness ng data bus nito.

Kapag sinabing 8-bit ang isang device, nangangahulugan ito ng bilang ng mga bits ng data na kayang iproseso ng microcontroller.

Sa arkitektura ng Harvard, ang mga tagubilin ay maaaring mas malaki kaysa sa data upang payagan ang isang buong pagtuturo na basahin sa isang ikot ng orasan. Halimbawa, ang mga PIC microcontroller, depende sa modelo, ay gumagamit ng mga command na may kaunting lapad na 12, 14, o 16 bits. SA Mga AVR microcontroller Ang command ay palaging 16 bits ang lapad. Gayunpaman, ang lahat ng mga microcontroller na ito ay may 8-bit na data bus.

Sa Princeton architecture device, karaniwang tinutukoy ng lapad ng data ang bit width (bilang ng mga linya) ng bus na ginagamit. Sa Motorola 68HC05 microcontrollers, ang isang 24-bit na pagtuturo ay matatagpuan sa tatlong 8-bit program memory cell. Upang ganap na makuha ang naturang pagtuturo, kinakailangan na magsagawa ng tatlong mga siklo ng pagbabasa ng memorya na ito.

Tingnan natin ang lima mga uri non-volatile resident memory, o Read Only Memory (ROM), na ginagamit upang mag-imbak ng mga program.

Alaala ng maskara.

Ang mga mask ROM (Mask-ROM o simpleng ROM) ay ginawa sa yugto ng produksyon ng microcontroller para sa isang ganap na debugged na programa. Sa isang glass photomask, kapag ginagamit ang programa, isang pattern ng mask ay nilikha. Ang resultang photomask na may maskara ay ginagamit upang bumuo ng mga koneksyon sa pagitan ng mga elemento na bumubuo sa memorya ng programa.

Ang unang mask ROM ay lumitaw noong unang bahagi ng 1960s at ginagamit pa rin ngayon salamat sa ganoon mga birtud bilang mababang gastos sa mass production ng mga produkto at mataas na pagiging maaasahan ng imbakan ng programa.

disadvantages mask ROM - anumang pagbabago sa application program ay nauugnay sa mga makabuluhang gastos at oras upang lumikha ng isang bagong hanay ng mga photomasks at ang kanilang pagpapakilala sa produksyon.

Isang beses na programmable memory.

Ang memorya na ito (One-Time Program mable ROM - OTPROM) ay user-programmable at sa simula ay naglalaman ng mga cell na may iisang bits. Tanging ang mga memory cell na iyon ang napapailalim sa programming, ang mga nilalaman nito ay dapat kumuha ng halaga na 0. Upang gawin ito, isang pagkakasunud-sunod ng tumaas na mga pulso ng boltahe ay inilalapat sa memory cell.

Ang antas ng boltahe, ang bilang ng mga pulso at ang kanilang mga parameter ng oras ay dapat na mahigpit na sumunod sa mga pagtutukoy. Pagkatapos magsulat ng zero, imposibleng maibalik ang isang solong halaga. Para sa kadahilanang ito, ang memorya ay tinatawag isang beses na programmable ROM. Gayunpaman, dapat ituro ng isa ang posibilidad karagdagang programming(hindi nagalaw) mga cell na may iisang piraso.

Ang mga microcontroller na may isang beses na programmable ROM ay ginagamit sa mga produktong ginawa sa maliliit na batch.

Reprogrammable memory na may ultraviolet erasure.

Ang Erasable Programmable ROM (EPROM) memory cell ay isang LIPSMOS (floating gate avalanche injection) transistor. Sa paunang estado (bago isulat), kapag nag-access sa isang cell, binabasa ang isang lohikal na yunit. Ang memory programming ay bumaba sa pagsulat ng mga lohikal na zero sa mga kaukulang cell. Ang mga EP ROM ay may kakayahang maraming programming, na ang teknolohiya ay katulad ng isang beses na programmable na teknolohiya ng ROM.

Bago ang bawat sesyon ng programming, burahin ang operasyon upang maibalik ang orihinal na estado ng mga cell ng memorya. Para sa mga ito, ang isang espesyal na window ay ibinigay sa microcontroller case, na kung saan ay irradiated na may ultraviolet rays. Ang bilang ng mga sesyon ng pagbubura/pagprograma ng ROM ay 25–100 beses, napapailalim sa teknolohiya ng programming (itakda ang mga halaga ng mga boltahe ng supply, bilang at tagal ng mga pulso) at ang teknolohiya ng pagbubura (hanay ng haba ng daluyong ng pinagmulan ng ultraviolet radiation).

Ang mga microcontroller na may memorya ng EPROM ay ginagamit sa mga prototype ng mga binuong aplikasyon dahil sa kanilang mataas na gastos.

Upang mabawasan ang gastos, ang mga EPROM chips ay nakapaloob sa isang case na walang window (bersyon ng EPROM na may isang beses na programming). Dahil sa pagbabawas ng gastos, ang mga bersyon ng EPROM ay kadalasang ginagamit sa halip na mga mask-programmable na ROM.

Reprogrammable memory na may electrical erasure.

Bilang isang elemento ng memorya na may electrical erasure (Electrically Erasable Pro grammable ROM - EEPROM o E2 PROM), isang transistor na may istraktura ng MNOS (Metal, Silicon Nitride, Silicon Oxide, Semiconductor) ang ginagamit, dahil sa kung saan ang ROM ay may medyo mababang gastos (kaugnay ng EPROM) at nagbibigay-daan sa maximum na bilang ng mga cycle ng pagbubura/pagprograma 10 4 -10 6 . Bilang karagdagan, ang EEPROM memory programming technology ay nagpapahintulot sa iyo na ipatupad byte burahin At byte programming, nang hindi inaalis ang controller mula sa board, na nagpapahintulot sa iyo na pana-panahong i-update ito software.

Sa kabila ng mga pakinabang na ito, ang ganitong uri ng memorya ay hindi malawakang ginagamit para sa pag-iimbak ng mga programa sa dalawang kadahilanan:

● Ang mga EEPROM ay may limitadong kapasidad;

● Lumitaw ang mga FLASH type ROM, na may mga katulad na katangian ng user, ngunit sa mas mababang halaga.

FLASH memory.

Ginawa ang electrically programmable at electrically erasable na FLASH memory (FLASH ROM) bilang alternatibo sa pagitan ng murang mga one-time programmable ROM na may mataas na kapasidad at mga mamahaling EEPROM ROM. maliit na kapasidad. Ang FLASH memory (tulad ng EEPROM) ay nagpapanatili ng kakayahang paulit-ulit na burahin at magprogram.

Ang addressing transistor ng bawat cell ay inalis mula sa ROM circuit, na, sa isang banda, ay naging imposible na i-program ang bawat bit ng memorya nang hiwalay, sa kabilang banda, ginawa itong posible upang madagdagan ang dami ng memorya. Samakatuwid, ang FLASH memory ay nabubura at na-program mga pahina o mga bloke.

Kaya, ang functional na FLASH-memory ay kaunti lamang ang pagkakaiba sa EEPROM. Ang pangunahing pagkakaiba ay sa paraan ng pagbubura ng naitala na impormasyon: kung sa EEPROM-memory erasure ay ginanap nang hiwalay para sa bawat cell, pagkatapos ay sa FLASH-memory - sa buong mga bloke. Sa mga microcontroller na may memorya ng EEPROM, kinakailangan na baguhin ang mga indibidwal na seksyon ng programa nang hindi kailangang i-reprogram ang buong device.

Sa kasalukuyan, ang mga MCU na may FLASH ay nagsisimula nang palitan ang mga MCU ng isang beses na programmable (at kahit na nakamaskara) na ROM.

ROM programming.

Tandaan na ang Mask ROM memory ay naka-program lamang sa pabrika sa panahon ng paggawa ng MK. Ang mga uri ng memorya ng OTPROM at EPROM ay nagbibigay sa developer ng mga kakayahan sa programming gamit ang isang programmer at pinagmumulan ng boltahe ng booster na konektado sa mga naaangkop na output ng MCU.

Ang EEPROM at FLASH memory ay tumutukoy sa reprogrammable, o reprogrammable alaala. Ang tumaas na kapangyarihan na kinakailangan para sa pagbura/pagprograma ay nilikha sa EEPROM at FLASH memory module ng mga modernong controllers gamit ang built-in na boltahe na amplification circuit na tinatawag na mga generator ng bomba. Salamat sa pagpapatupad kontrol ng programa Sa pamamagitan ng pag-on at off ng pump generator, naging posible sa prinsipyo na magprogram o burahin ang mga cell ng memorya ng FLASH at EEPROM bilang bahagi ng system na binuo. Ang programming technique na ito ay tinatawag programming sa system(Sa System Programming - ISP).

Hindi ito nangangailangan ng mga espesyal na kagamitan (mga programmer), na binabawasan ang mga gastos sa programming. Ang mga microcontroller na may memorya ng ISP ay maaaring ma-program pagkatapos na mai-install ang mga ito sa board ng huling produkto.

Isaalang-alang natin kung paano ipinatupad (at ginamit) ang posibilidad ng pagprograma ng EEPROM-memory sa ilalim ng kontrol ng isang application program. Kung ang programa na may algorithm ng programming ay naka-imbak sa isang hiwalay na module ng memorya na may isang nominal na boltahe ng supply, at ang memorya ng EEPROM ay binibigyan ng mga generator ng bomba, kung gayon ang ISP programming ng memorya ng EEPROM ay maaaring maisagawa. Ang sitwasyong ito ay gumagawa ng EEPROM memory na isang mainam na non-volatile na storage device para sa pag-iimbak ng mga setting ng user na binago sa panahon ng pagpapatakbo ng produkto. Ang isang halimbawa ay isang modernong TV, ang mga setting ng channel na kung saan ay nai-save kapag ang kapangyarihan ay naka-off.

Samakatuwid, ang isa sa mga uso sa pagpapabuti ng resident memory ng 8-bit MKs ay ang pagsasama ng dalawang non-volatile memory modules sa MK chip: FLASH (o OTP) - para sa pag-iimbak ng mga programa at EEPROM - para sa pag-iimbak ng mga reprogrammable constants.

Isaalang-alang ang teknolohiya (muling) FLASH programming–memorya na may built-in na pump generator na kinokontrol ng isang application program. Una sa lahat, tandaan namin ang dalawang katotohanan:

● kung ang EEPROM memory ay binuo sa MK para sa pag-iimbak ng mga reprogrammable constants, kung gayon ang pagprograma ng ilang piraso ng FLASH-memory sa panahon ng pagpapatakbo ng tapos na produkto ay hindi makatuwiran. Kung kinakailangan, mas mahusay na agad na gamitin ang reprogramming mode;

● Hindi mo dapat iimbak ang FLASH-memory programming program sa FLASH-memory mismo, dahil ang paglipat sa programming mode ay magiging imposibleng basahin pa ito. Ang programming program ay dapat na matatagpuan sa isa pang memory module.

Upang ipatupad ang teknolohiya ng programming sa system, napili ang isa sa mga serial port ng MC, na sineserbisyuhan ng isang espesyal na programa sa monitor ng komunikasyon, matatagpuan sa resident mask ROM MK. Sa pamamagitan ng serial port Personal na computer nilo-load ang program sa RAM programming At inilapat program, na pagkatapos ay naka-imbak sa FLASH memory. Dahil ang residente ng RAM ng MK ay may maliit na halaga, ang programa ng aplikasyon ay na-load sa magkahiwalay na mga bloke (mga bahagi). Kung ang isang mask memory module na may isang programming program ay naka-install sa MCU, tanging ang application program ay na-load sa RAM.

Ang mga microcontroller na nagpapatupad ng teknolohiya ng programming sa system ay kadalasang kasama apat uri ng memorya:

FLASH - memorya ng programa, Mask ROM - memorya ng monitor ng komunikasyon, EEPROM - memorya para sa pag-iimbak ng mga variable na constant at intermediate data RAM.

Ang teknolohiya ng programming sa system ay lalong ginagamit ngayon upang ipasok ang mga programa ng aplikasyon sa mga microcontroller na matatagpuan sa board ng huling produkto. kanya dignidad- kakulangan ng isang programmer at mataas na pagiging maaasahan ng programming, dahil sa katatagan ng tinukoy na mga panloob na mode ng MC.

Bilang halimbawa, ipinakita namin ang mga tagapagpahiwatig ng resident FLASH-memory ng pamilyang MC HC08 mula sa Motorola:

● garantisadong bilang ng mga cycle ng pagbura/pagprograma - 10 5 ;

● Garantiyang oras ng pag-iimbak ng naitala na impormasyon - 10 taon, na halos ang ikot ng buhay ng produkto; Ang mga module ng FLASH-memory ay gumagana at naka-program sa boltahe ng supply ng MK mula 1.8 hanggang 2.7 V;

● Ang katumbas na oras ng programming para sa 1 byte ng memorya ay 60 µs.

Memorya ng data.

Ginamit bilang resident data memory static Random access memory (RAM), na nagbibigay-daan sa iyong bawasan ang dalas ng orasan sa di-makatwirang maliliit na halaga. Ang mga nilalaman ng mga cell ng RAM (hindi tulad ng dynamic na memorya) ay iniimbak hanggang sa zero frequency. Ang isa pang tampok ng static na RAM ay ang kakayahang bawasan ang supply boltahe sa isang tiyak na minimum na pinahihintulutang antas, kung saan ang microcontroller control program ay hindi naisakatuparan, ngunit ang mga nilalaman sa RAM ay nai-save.

Ang antas ng imbakan ay may halaga ng pagkakasunud-sunod ng isang bolta, na nagpapahintulot, kung kinakailangan, na ilipat ang MK sa kapangyarihan mula sa isang autonomous na pinagmulan (baterya o nagtitipon) upang makatipid ng data. Ang ilang MK (halimbawa, DS5000 mula sa Dallas Semiconductor) ay may autonomous power supply sa kaso, na ginagarantiyahan ang pangangalaga ng data sa RAM sa loob ng 10 taon.

Ang isang katangian ng microcontrollers ay ang medyo maliit na halaga (daan-daang bytes) ng random access memory (RAM) na ginagamit upang mag-imbak ng mga variable. Ito ay maaaring ipaliwanag sa pamamagitan ng ilang mga kadahilanan:

● nagsusumikap para sa pagpapasimple ng MC hardware;

● paggamit ng ilang partikular na panuntunan kapag nagsusulat ng mga programa na naglalayong bawasan ang dami ng memorya ng RAM (halimbawa, ang mga constant ay hindi iniimbak bilang mga variable);

● pamamahagi ng mga mapagkukunan ng memorya sa paraang sa halip na maglagay ng data sa RAM, ang maximum na paggamit ng hardware (mga timer, mga rehistro ng index, atbp.);

● oryentasyon ng mga application program upang gumana nang hindi gumagamit ng malalaking data array.

Mga tampok ng stack.

Sa microcontrollers, isang bahagi ng memorya ng RAM, na tinatawag na salansan. Sa panahon ng mga operasyong ito, ang mga nilalaman ng program counter at ang mga pangunahing rehistro (accumulator, status register, index at iba pang mga rehistro) ay nai-save, at naibalik kapag bumalik sa pangunahing programa. Alalahanin na ang stack ay gumagana ayon sa prinsipyo: huling pumasok Unang lumabas(Last In, First Out-LIFO).

Sa arkitektura ng Princeton, ang RAM ay ginagamit upang ipatupad ang maraming mga function ng hardware, kabilang ang mga stack function. Ang mga hiwalay na lugar ay inilalaan sa memory address space para sa mga command, general-purpose registers, special function registers, atbp. Binabawasan nito ang pagganap ng controller, dahil ang pag-access sa iba't ibang mga lugar ng memorya ay hindi maaaring gumanap nang sabay-sabay.

Maaaring tugunan ng mga microprocessor ng Harvard ang memorya ng programa, memorya ng data (kabilang ang espasyo ng I/O), at ang stack nang magkatulad (sabay-sabay).

Halimbawa, kapag ang isang CALL subroutine na pagtuturo ay na-activate, maraming mga aksyon ang ginagawa nang sabay-sabay.

Sa arkitektura ng Princeton, kapag ang isang CALL na pagtuturo ay naisakatuparan, ang susunod na pagtuturo ay kinukuha lamang pagkatapos na ang mga nilalaman ng program counter ay nai-push sa stack.

Dahil sa maliit na kapasidad ng RAM sa mga microcontroller ng parehong mga arkitektura, maaaring lumitaw ang mga problema kapag isinasagawa ang programa:

● kung ang isang hiwalay na stack ay inilalaan, pagkatapos ay pagkatapos na ito ay mapunan, ang mga nilalaman ng stack pointer ay paikot-ikot na nagbabago, bilang isang resulta kung saan ang stack pointer ay nagsisimulang tumukoy sa dating napuno na stack cell. Samakatuwid, pagkatapos ng napakaraming mga tagubilin sa TAWAG, ang maling return address ay nasa stack, na isinulat sa halip na ang tamang address;

● Kung ang microprocessor ay gumagamit ng isang karaniwang lugar ng memorya upang mapaunlakan ang data at ang stack, ang stack overflow ay mag-o-overwrite sa data. Isaalang-alang natin ang mga tampok ng pag-save ng mga nilalaman ng mga rehistro sa stack, dahil sa kakulangan ng mga tagubilin para sa pag-load sa stack (PUSH) at pag-pop mula sa stack (POP). Sa ganitong mga microcontroller, sa halip na ang mga tagubilin ng PUSH at POP, dalawang mga tagubilin at isang rehistro ng index ang ginagamit, na tahasang tumuturo sa lugar ng stack. Ang pagkakasunud-sunod ng pagtuturo ay dapat na ganoon na ang pagkaantala sa pagitan ng una at pangalawang pagtuturo ay hindi magreresulta sa pagkawala ng data. Ang sumusunod ay isang simulation ng PUSH at POP command, na isinasaalang-alang ang tinukoy na kinakailangan.

PUSH ; Mag-load ng data sa stack decrement index; Ilipat sa susunod na lokasyon ng stack ilipat [index], ace; Itabi ang mga nilalaman ng accumulator sa stack POP ; Pop data mula sa stack move ace, ; Itulak ang stack value sa accumulator increment index ; Ilipat sa nakaraang stack cell

Kung ang programa ay nagambala pagkatapos ng unang pagtuturo, ang mga nilalaman ng stack ay hindi mawawala pagkatapos mahawakan ang pagkagambala.

magrehistro ng memorya.

Ang mga microcontroller (tulad ng mga computer system) ay mayroong maraming registers na ginagamit para sa pamamahala iba't ibang mga panloob na node at mga panlabas na aparato. Kabilang dito ang:

● nagrerehistro core ng processor(baterya, mga rehistro ng katayuan, mga rehistro ng index);

● nagrerehistro pamamahala(i-interrupt control registers, timer control registers);

● data input/output registers (data registers at parallel, serial o analog input/output control registers).

Ayon sa paraan ng paglalagay ng mga rehistro sa puwang ng address, maaari nating makilala:

● mga microcontroller, kung saan matatagpuan ang lahat ng mga rehistro at memorya ng data isa address space, ibig sabihin, ang mga rehistro ay nakahanay sa memorya ng data. Sa kasong ito, ang mga I/O device ay namamapa sa memorya;

● mga microcontroller, kung saan ang mga input/output device hiwalay mula sa kabuuang espasyo ng address ng memorya. Ang pangunahing bentahe ng paraan ng paglalagay ng mga rehistro ng I / O sa isang hiwalay na puwang ng address ay pinapasimple nito ang pamamaraan para sa pagkonekta ng memorya ng programa at data sa isang karaniwang bus. Ang isang hiwalay na puwang ng I/O ay nagbibigay ng karagdagang benepisyo sa mga processor ng arkitektura ng Harvard sa pamamagitan ng pagpapahintulot na basahin ang pagtuturo habang ina-access ang rehistro ng I/O.

Kung paano naa-access ang mga rehistro ay may malaking epekto sa kanilang pagganap. Sa mga processor na may arkitektura ng RISC, ang lahat ng mga rehistro (kadalasan ang nagtitipon) ay matatagpuan sa mga tahasang address, na nagbibigay ng higit na kakayahang umangkop sa pag-aayos ng gawain ng processor.

Tungkol sa panlabas na memorya.

Sa mga kaso kung saan walang sapat na memorya ng programa ng residente at memorya ng data para sa mga binuo na application, ang karagdagang panlabas na memorya ay konektado sa microcontroller. kilala dalawa pangunahing paraan:

● koneksyon panlabas na memorya gamit ang interface ng bus (tulad ng sa mga microprocessor system). Maraming microcontroller ang may espesyal na hardware para sa koneksyon na ito;

● koneksyon ng memory sa input-output device. Kasabay nito, ina-access ang memory sa pamamagitan ng mga device na ito mga tool sa software. Ang pamamaraang ito ay nagbibigay-daan sa paggamit ng mga simpleng I/O device nang hindi nagpapatupad ng mga kumplikadong interface ng bus. Ang pagpili ng paraan ay depende sa partikular na aplikasyon.

Anotasyon: Ang prinsipyo ng pagpapatakbo ng mga rehistro bilang mga elemento ng electronic memory ay isinasaalang-alang.

Ang rehistro ay isang IC na may katamtamang antas ng pagsasama, na idinisenyo upang kabisaduhin at mag-imbak ng isang multi-bit na salita.

rehistro-trangka

Protozoa magparehistro ay isang parallel na koneksyon ng ilang mga trigger (Larawan 8.1, a). Ang UGO register-latch ay ipinapakita sa fig. 8.1, b. Kung magparehistro binuo sa flip-flops, ito ay tinatawag na magparehistro-"trangka". Bilang isang patakaran, ang mga buffer amplifier at mga kontrol ay bahagi ng register IC, halimbawa, tulad ng ipinapakita sa Fig. 8.2, a. Narito ang isang functional diagram ng isang 8-bit D- latch register KR580IR82 na may tatlong estado ng output. Ang UGO nito ay ipinapakita sa Fig. 8.2, b.


kanin. 8.1. Four-bit na "latch" na rehistro na may mga direktang output: a - functional diagram; b - UGO

ikatlong estado(ang unang dalawa ay lohikal na 0 at lohikal na 1) ay ang estado ng mga output ng IC, kung saan ang mga ito ay hindi nakakonekta sa parehong pinagmumulan ng kapangyarihan at sa karaniwang punto. Ang iba pang mga pangalan para sa estadong ito ay mataas na pagtutol, mataas na impedance ng estado, Z-estado[ , mula sa. 61 - 63; , mula sa. 68 - 70].

Ito ay nakamit ikatlong estado espesyal na solusyon sa circuit [, p. 117 - 118] sa output na bahagi ng mga elemento ng logic, kapag ang mga output transistors ng mga elemento ng logic ay naka-lock at hindi nagbibigay ng alinman sa supply boltahe o ang potensyal na lupa (hindi 0 at hindi 1) sa output.

Magrehistro Ang KR580IR82 ay binubuo ng 8 functional blocks (Larawan 8.2, a). Kasama sa bawat isa sa kanila D-trigger-latch na may recording sa trailing edge at isang malakas na 3-state na output gate. STB- strobe input, - transmission enable - isang signal na kumokontrol sa ikatlong estado: kung , pagkatapos ay ililipat ang impormasyon mula sa mga input patungo sa kaukulang mga output, kung , lahat ng mga output ay ililipat sa ikatlong estado. Kapag at IS ay gumagana sa bus shaper mode - ang impormasyon mula sa mga input ay ipinapadala sa mga output na hindi nagbabago.

Kapag nag-a-apply para sa trailing edge mayroong isang "snap" ng ipinadalang impormasyon sa mga trigger, iyon ay, naaalala nito kung ano ang nasa oras ng pagsusumite . Bye, buffer magparehistro ay mag-iimbak ng impormasyong ito, anuman ang impormasyon sa D-mga input. Kapag nag-aaplay ng isang nangungunang gilid kapag nai-save, ang estado ng mga output ay magbabago alinsunod sa pagbabago sa mga kaukulang input. Kung , pagkatapos ay ang lahat ng mga output amplifier ay ililipat sa ikatlong estado. Sa kasong ito, anuman ang estado ng mga input, lahat ng mga output magparehistro inilipat sa ikatlong estado.

Ang lahat ng mga output ng rehistro ay maaaring magkaroon ng isang aktibong antas ng zero, na ipinapakita sa UGO sa anyo ng mga kabaligtaran na signal at mga pagtatalaga ng output.

Mayroong maraming mga varieties nagrerehistro, halimbawa, mga shift register [ , kabanata 8], kung saan ang mga trigger ay magkakaugnay sa paraang inilipat nila ang impormasyon nang sunud-sunod mula sa isang trigger patungo sa isa pa [ , pp. 109 - 122], ngunit dito ay tututuon natin ang rehistro ng trangka at aplikasyon nito.

Magrehistro ng memorya

Registered memory - register file - ay isang sobrang random na access memory (SRAM) - isang circuit ng ilang registers na idinisenyo upang mag-imbak ng ilang multi-bit na salita.

Sa fig. 8.3 ay nagpapakita ng isang halimbawa ng pagpapatupad SOZU, na binubuo ng apat na 8-bit nagrerehistro(Ang koneksyon ng RG2 at RG3 ay hindi ipinapakita, ito ay isinasagawa sa parehong paraan). Ibinigay SOZU ay may dami ng impormasyon na 4x8 bits - 4 na salita na 8 bits, o 4 byte. Dito DI - input ng data- input ng data bus, DO-data na output- output data bus, WR- sumulat ng signal sa SRAM, RD- signal para sa pagbabasa ng impormasyon mula sa SRAM, VSD - panloob na data bus.

Bawat magparehistro ay may dalawang-digit na address, na ibinibigay sa mga input ng decoder. Halimbawa, ang dulong kaliwa sa Fig. 8.3 magparehistro Ang RG1 ay may address , ang susunod - (hindi ipinapakita sa figure), susunod - (hindi ipinapakita), at ang dulong kanan magparehistro Nasa RG4 ang address .

Kung mayroong aktibong signal ng pagsulat, ang decoder, alinsunod sa address code, ay naglalabas ng isa sa nagrerehistro aktibong signal kung aling impormasyon mula sa input data bus DI ay nakasulat sa napili magparehistro. Sa trailing edge, ang impormasyon dito magparehistro"mga snap".

Kung, halimbawa, sa DI nagsumite ng impormasyon at address magparehistro katumbas ng , pagkatapos ay ang aktibong signal sa output na "3" ng decoder ay ilalapat sa rehistrong RG4. Sa oras na ito, ang natitirang mga rehistro ay magkakaroon ng isang hindi aktibong antas ng signal, samakatuwid, ang impormasyon mula sa input data bus ay isusulat sa RG4, at ang impormasyong naitala nang mas maaga ay maiimbak sa natitirang mga rehistro.

Gamit ang isang aktibong read signal, lahat ng 8 multiplexer ay naisaaktibo (ang una, pangalawa at ikawalo ay ipinapakita sa diagram, ang iba ay konektado sa katulad na paraan), dahil ang isang aktibong signal ay inilalapat sa kanilang mga paganahin na input. Alinsunod sa decoder ng address, inililipat ng mga multiplexer ang impormasyon mula sa napiling rehistro patungo sa output data bus. Halimbawa, , ang address ng rehistro ay . Pagkatapos ay sa lahat ng mga multiplexer, lahat sila ay magsisimulang pumili ng impormasyon alinsunod sa address. Samakatuwid, sa output bus GAWIN mga piraso ng panloob na bus na may mga numero 25 - mula sa unang multiplexer, 26 - mula sa pangalawa, 27 - mula sa pangatlo, 28 - mula sa ikaapat, 29 - mula sa ikalima, 30 - mula sa ikaanim, 31 - mula sa ikapitong at 32 - mula sa ikawalong multiplexer ay ibibigay. Kaya, ang impormasyon na isang kopya ng nilalaman magparehistro RG 4 na may address ay inilipat sa output data bus DO - hindi nabagong estado ng output ng multiplexer.

Mayroong dalawang pangunahing uri ng random access memory (RAM); sila ay buffered memory—o nakarehistrong memory—at unbuffered memory. Ang unbuffered memory ay mas mabilis at kadalasang mas mura kaysa sa buffered memory. Kaya, ito ay isang uri ng module na makikita sa halos lahat ng home desktop at laptop computer. Ang naka-buffer na memory ay mas mahal kaysa sa hindi naka-buffer na uri, at mas mabagal din dahil sa kung paano nito pinangangasiwaan ang pag-iimbak at pagkuha ng data.
Ang naka-buffer na memorya, gayunpaman, ay mas matatag kaysa sa mga unbuffered na form, kaya ito ay pangunahing ginagamit sa mga mainframe na computer at server.

Ang unbuffered memory ay ang pinakakaraniwang anyo ng computer memory module na makikita sa pang-araw-araw na paggamit. Ang mga memory module na ito ay mura sa paggawa kumpara sa mga buffered memory module, bahagyang dahil sa kanilang karaniwang paggamit sa bahay at komersyal na mga computer, at dahil din sa mas kaunting paggamit ng mga ito. hardware. Ang isang unbuffered memory module ay walang built-in na hardware upang kumilos bilang isang rehistro para sa mga tagubilin sa pagitan ng RAM chip at memory controller ng computer. Nagreresulta ito sa mas mabilis na pagganap, ngunit pinapataas ang panganib ng pagkawala ng memorya na nagreresulta mula sa random na katangian ng paglalagay at pagkuha ng impormasyon, lalo na sa mga panahon ng matinding aktibidad.

Karamihan sa karaniwang tinutukoy bilang nakarehistrong memorya ay buffered memory. Unbuffered memory, kakaiba, iningatan ang pangalan nito at hindi binago sa unregistered memory. Ang naka-buffer na memory ay naiiba sa hindi naka-buffer na uri dahil mayroon itong rehistro ng hardware na nag-iimbak ng impormasyon sa cache para sa isang cycle ng memory chip. Bagama't ang operasyong ito ay maaaring magresulta sa isang mas mabagal na memory chip, nagbibigay ito ng karagdagang katatagan at binabawasan ang panganib ng mga error sa memorya.

Sa pangkalahatang paggamit ng consumer, ang pagkakaiba sa bilis sa pagitan ng dalawang uri ng mga memory module ay tila bale-wala. Sa mga panahon ng masinsinang pagpapalitan ng impormasyon, lumilitaw ang latency, na sinusunod gamit ang rehistro. Ang buffered memory ay karaniwang ginagamit sa mga server computer at mainframe system upang magbigay ng katatagan at proteksyon laban sa pinsala na maaaring mangyari sa mga hindi na-buffer na module kapag sila ay napapailalim sa patuloy na mabigat na paggamit. Habang ang mga naka-buffer na module ay mas mahal at sa pangkalahatan ay mas mabagal sa pagtakbo, ang katatagan ng memorya at seguridad ng data ay higit pa sa nakakabawi dito sa isang kapaligiran ng produksyon.