Ac ARM (neu hyd yn oed x86) MCU/CPU gyda strwythur von Neumann, mae ei ofod cyfeiriad yn unedig ac yn barhaus, cof cod/ram/CPU, ac mae hyd yn oed cof fideo PC i gyd yn cael sylw unffurf. Dim ond y cof hwnnw gyda gwahanol swyddogaethau sy'n cynnwys gwahanol flociau cyfeiriad, ac maent yn gwneud eu pethau eu hunain.
Iawn, gadewch i ni fynd yn ôl i MCS-51.
Er cof am y rhaglen, mae dwy ran: ar naddion ac oddi ar y sglodion. A beth bynnag fo cof y rhaglen ar naddion neu gof y rhaglen oddi ar y sglodion, mae eu cyfeiriadau'n cael eu rhannu. Os oes 4k ROM ar naddion, y cyfeiriad yw 0x0000-0x0FFF, a 0x1000-0xFFFF yw gofod cyfeiriad y ROM allanol. P'un 0x0000 a 0x0FFF o'r ROM allanol yn cael ei ddefnyddio, mae'n dibynnu ar werth lefel pin Asiantaeth yr Amgylchedd o'r microreoli. Pan ddefnyddir Asiantaeth yr Amgylchedd=1, defnyddir y rhan hon o'r ROM mewnol, ac mae'r rhan hon o'r ROM allanol yn cael ei gwastraffu ac ni chaiff ei defnyddio; pan ddefnyddir Asiantaeth yr Amgylchedd=0, y rhan hon o'r ROM allanol, a chaiff y ROM mewnol ei wastraffu a'i ddefnyddio. I ddarllen data o'r segment CODE, defnyddiwch y cyfarwyddyd MOVC a gynullwyd. Bydd y microgyfrifiadur un sglodion yn penderfynu'n awtomatig pa gof i nôl data ohono yn unol â chyfarwyddyd MOVC, statws Asiantaeth yr Amgylchedd, a'r gwerth cyfeiriad sydd i'w ddarllen
Er cof data, mae wedi'i rannu'n ddwy ran: cof data mewnol (IDATA/RAM) a chof data allanol (XDATA), ond nid yw'r ddwy atgof hyn yn rhannu'r cyfeiriad fel cof cod. Dim ond 128B yw'r 8051 o sglodion cyffredinol, y RAM mewnol, o 0x00-0x7F, ac o 0x80-0xFF maes SFR (mae cofrestri gwaith CPU a chofrestri ymylol amrywiol yma). Ar gyfer yr 8052, mae gan yr RAM mewnol 256B, felly 0x80-0xFF yw'r RAM 128B uchel sy'n cael ei ddefnyddio. Ond onid yw'r rhan hon wedi'i neilltuo ar gyfer SFR? Mae wedi'i neilltuo ar gyfer SFR, ond mae'n nodi mai dim ond "mynd i'r afael yn uniongyrchol" (a weithredir gan ddefnyddio cyfarwyddiadau penodol i'r gwasanaeth), mae'r gwahaniaeth yma. Dim ond y cyfeiriad a gyrchir drwy roi sylw uniongyrchol yw SFR, neu fel arall mae'n RAM cyffredin. O ran yr RAM estynedig (XDATA), daw'r cyfeiriad hefyd o 0x0000-0xFFFF, ac mae'r 0x0000 yma yn wahanol i 0x00 yr RAM mewnol, ac maent yn gwbl annibynnol ar ddau le. Mae eu dulliau mynediad hefyd yn wahanol. Mae MCS-51 yn defnyddio cyfarwyddyd MOVX i ddarllen ac ysgrifennu ardal XDATA. At hynny, mae mynediad i ardal XDATA yn gofyn am gymorth y gofrestr DPTR. Gan mai dim ond DPTR all ddal y cyfeiriad XDATA 16-did nesaf.
Felly, MCS-51 sydd â'r cyflymder darllen ac ysgrifennu cyflymaf o ardal IDATA a'r dulliau mwyaf mynediad. Mae cyflymder cael mynediad i ardal XDATA yn gymharol araf. Dylid datblygu pentwr MCS-51 yn ardal IDATA yn gyntaf, a gall y pentwr a agorwyd yn ardal IDATA gael ei reoli gan gofrestr pwyntydd y pentwr SP. Os yw'r pentwr yn rhy fawr iawn ac mai dim ond yn ardal XDATA y gellir ei agor, yna bydd yn anodd benthyca cofrestr SP y CPU, a dim ond ein hunain y gallwn adeiladu strwythur y pentwr a'r pwyntydd pentyrrau. Gan fod gofod a gofod data'r rhaglen allanol yn 0-64K (0x0000-0xFFFF), yna gallaf arbed rhaglenni ailysgrifennu trafferthion/cyfleus a rhesymau eraill, gall y COD a'r DATA allanol rannu cof ailysgrifennu (fel amrywiol Beth y gellir ei ddileu a'i ysgrifennu). Er enghraifft, mae gan y system GOF allanol 64K. Defnyddir y 32K is i arbed y CODE, a gall y microreoli ddarllen a rhedeg y rhaglen yn y 32K hwn, a defnyddir y 32K uwch fel y lle storio ar gyfer data defnyddwyr. Ond ar hyn o bryd, y GOFOD a'r gofod DATA cwbl annibynnol yn wreiddiol, oherwydd bod COF yn cael ei rannu ar y sglodion caledwedd, gallant effeithio ar ei gilydd, a gall y rhaglen ailysgrifennu'r rhaglen ar ei phen ei hun. Er enghraifft, mae 0x0020 yn gyfarwyddyd, ac rwy'n ailysgrifennu 0x0020 drwy MOVX, ac yna'n defnyddio MOVC i ddarllen 0x0020, ac mae'r data'n wahanol i'r gwreiddiol.
Craidd dryswch yw bod gofod storio'r microgyfrifiadur un sglodion yn gysyniad rhesymegol, sef dau le ar wahân sydd wedi'u rhannu'n artiffisial. Mae'r sglodyn MEMORY ar gylched y caledwedd yn gysyniad mewn gwirionedd. Bydd gofod storio'r microgyfrifiadur un sglodion yn cael ei weithredu yn y pen draw ar y sglodion ar lefel y syrcas, felly bydd y gofod storio rhesymegol yn gorgyffwrdd oherwydd y cysylltiad cylched ffisegol. Ond ar y lefel resymegol, mae'r ddau le hyn yn dal yn gwbl annibynnol.
Atodiad: Diffiniad o wahanol enwau lleoedd storio:
Data: cyfeiriwch yn sefydlog at y 128 RAMs o 0x00-0x7f yn y rheng flaen, y gellir eu darllen a'u hysgrifennu'n uniongyrchol gan gofrestr, y cyflymaf a'r cod lleiaf a gynhyrchir.
Idata: mae'n cyfeirio'n sefydlog at y 256 RAMs o 0x00-0xff yn y rheng flaen, ac mae'r 128 cyntaf yn union yr un fath â'r 128 o ddata, dim ond oherwydd y gwahanol ddulliau mynediad. Ceir mynediad i idata gan ddefnyddio pwyntydd tebyg i C. Y datganiad yn y cynulliad yw: mov ACC,@Rx. (atodiad nad yw'n bwysig: mae gan idata mewn c effaith mynediad pwyntydd da) xdata: RAM estynedig allanol, yn gyffredinol yn cyfeirio at y gofod 0x0000-0xffff allanol, y mae DPTR yn ei ddefnyddio. pdata: y 256 beit isaf o'r RAM estynedig allanol, darllen ac ysgrifennu pan fydd y cyfeiriad yn ymddangos ar A0-A7, defnyddio movx ACC, @Rx i ddarllen ac ysgrifennu. Mae hyn yn eithaf arbennig, ac mae'n ymddangos bod gan C51 y nam hwn, argymhellir defnyddio llai. Ond mae ei fanteision hefyd. Mae'r defnydd penodol yn broblem ganolradd, dydw i ddim yn gwybod sut i'w defnyddio, felly fydda i ddim yn sôn amdani yma.








