0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

按字節(jié)編址與按字長(zhǎng)編址區(qū)別及原理圖解分析

電子設(shè)計(jì) ? 來(lái)源:TOMORROW 星辰 ? 作者:TOMORROW 星辰 ? 2020-12-25 15:33 ? 次閱讀

計(jì)算機(jī)或者嵌入式剛剛?cè)腴T的人,可能會(huì)有這樣的疑問(wèn):CPU 是 32 位/64 位的計(jì)算機(jī),是怎么讀取一個(gè)字節(jié)的?又或者說(shuō),是怎么一下子讀取到 32 位/64 位數(shù)據(jù)的?這其實(shí)就是計(jì)算機(jī)的編址的問(wèn)題。只要知道了,按字節(jié)編址與按字長(zhǎng)編址的區(qū)別就可以解決這些疑問(wèn)了。下面將用按字節(jié)編址與按字編址的電路原理圖圖解來(lái)講述其中的奧秘。

首先,32 位/64 位 CPU 指的是 CPU 的數(shù)據(jù)總線的寬度,也是字長(zhǎng)。初學(xué)者可能就會(huì)認(rèn)為,既然是 32 位 CPU 了,數(shù)據(jù)總線的寬度也是 32 位的,那么 CPU 就應(yīng)該是每一次都是從內(nèi)存中并行讀取 32 位的數(shù)據(jù),那么 32 位 CPU 的內(nèi)存的基本單元就應(yīng)該是 32 位的才對(duì),為什么現(xiàn)在的計(jì)算機(jī)都是以 8 位一個(gè)字節(jié)為基本存儲(chǔ)單元的呢?32 位 CPU 它是怎么實(shí)現(xiàn)對(duì)一個(gè)字節(jié)單元的讀寫操作的呢?

按字節(jié)編址

關(guān)鍵就在于字節(jié)編址。編址,顧名思義就是對(duì)地址的編排。而按字節(jié)編址就是,一個(gè)字節(jié)做為一個(gè)基本的地址單元。通俗點(diǎn)說(shuō)就是一個(gè)地址對(duì)應(yīng)一個(gè)字節(jié)(8 位)。

?需要說(shuō)明的是該芯片的基本存儲(chǔ)單元是 8 位(一個(gè)字節(jié)),cADDR0-cADDR15 是 CPU 的地址線。

如上圖所示就是一個(gè)很經(jīng)典的按字節(jié)編址的電路。按照該電路設(shè)計(jì),那么 CPU 的每一個(gè)地址都對(duì)應(yīng)著存儲(chǔ)芯片的一個(gè)字節(jié)。這時(shí)候還是會(huì)有疑問(wèn),那么按字節(jié)編址,CPU 不是每一次都是只能讀取一個(gè)字節(jié)的數(shù)據(jù)嗎?這個(gè)時(shí)候再看一個(gè)圖:

這是一個(gè) 32 位 CPU 的內(nèi)存芯片電路圖。仔細(xì)觀察電路圖可以看到,CPU 的 32 位數(shù)據(jù)是由兩個(gè) 16 位內(nèi)存芯片的數(shù)據(jù)并成的。這樣 CPU 就可以每一次都是讀取到 32 位的數(shù)據(jù)了。這時(shí)候再來(lái)看看地址總線。你會(huì)發(fā)現(xiàn),CPU 的地址總線 LADDR2 接的是內(nèi)存芯片的 A0,LADDR1、LADDR0 哪里去了?為什么錯(cuò)開(kāi)了兩條地址線?

其實(shí)這就是 16 位及以上的 CPU 實(shí)現(xiàn)按字節(jié)編址的關(guān)鍵所在。舉個(gè)例子就好理解了。CPU 地址總線發(fā)出 4 個(gè)地址信號(hào) 000000、000001、000010、000011(省略掉前面的 N 個(gè) 0 了),這 4 個(gè)地址信號(hào)改變的是最低兩位的地址線(LADDR1、LADDR0),高 30 位(LADDR2-LADDR31)始終還是 0,結(jié)合電路知道,CPU 地址總線發(fā)出的這 4 個(gè)地址信號(hào)讀取到的數(shù)據(jù)其實(shí)是相同的 32 位數(shù)據(jù),因?yàn)樽畹蛢晌坏刂肪€根本沒(méi)有接到內(nèi)存芯片上。而這 32 位數(shù)據(jù)(4 個(gè)字節(jié))剛好可以通過(guò)最低兩位地址線進(jìn)行編排(2^2=4),具體 4 個(gè)地址與 4 個(gè)字節(jié)是如何編排的則是由 CPU 所決定的(可以是高字節(jié)對(duì)高地址,也可以是高字節(jié)對(duì)低地址)。所以 CPU 發(fā)出的每一個(gè)地址信號(hào)其實(shí)還是只對(duì)應(yīng)著一個(gè)字節(jié)(8 位)的,也就是 CPU 的尋址還是按照字節(jié)來(lái)尋址的。這就是按字節(jié)編址。

而 CPU 要實(shí)現(xiàn)對(duì)其中某一個(gè)字節(jié)的操作可以通過(guò)“按位與”和“按位或”運(yùn)算實(shí)現(xiàn)。

?請(qǐng)忽略LADDR14-LADDR24 之間的不連續(xù),這需要結(jié)合到具體的芯片型號(hào)才能看懂的。并不是本文的重點(diǎn)。

按字編址

如果懂了按字節(jié)編址,那么按字編址就很好理解了。直接看圖

該圖是 32 位 CPU 按字編址的電路原理圖。32 位 CPU 的字長(zhǎng)就是 32 位,因此按字編址就是,每一個(gè)地址對(duì)應(yīng)著一個(gè)字長(zhǎng)的數(shù)據(jù)。圖中可以看到,CPU 的地址總線 cADDR0-cADDR15 與內(nèi)存芯片的 A0-A15 是一一對(duì)應(yīng)的,并沒(méi)有像按字節(jié)編址那樣,將最低兩位錯(cuò)開(kāi)。然后由兩個(gè) 16 位的內(nèi)存芯片的數(shù)據(jù)合并成 32 位數(shù)據(jù)。CPU 同樣是每次讀取 32 字節(jié)的數(shù)據(jù),但是,CPU 發(fā)出的每一個(gè)地址信號(hào)都對(duì)應(yīng)著一個(gè) 32 位的數(shù)據(jù),不同的地址信號(hào)對(duì)應(yīng)著不同的存儲(chǔ)單元。

按字編址設(shè)計(jì)的電路,CPU 是沒(méi)辦法尋址到某一個(gè)字節(jié)并對(duì)其操作的,因?yàn)?CPU 發(fā)出的每一個(gè)地址信號(hào)都對(duì)應(yīng)著 32 位的數(shù)據(jù),無(wú)法具體到其中的哪些字節(jié)。

總結(jié)

判斷是按字編址還是按字節(jié)編址的關(guān)鍵在于,判斷 CPU 給出的每一個(gè)地址所確定的存儲(chǔ)單元的大小。其大小等于一個(gè)字節(jié),那么就是按字節(jié)編址的;等于一個(gè)字,則是按字編址的。

現(xiàn)代計(jì)算機(jī)大多數(shù)采用的都是按字節(jié)編址的方式設(shè)計(jì)的,也就是經(jīng)常所說(shuō)的,計(jì)算機(jī)最基本的存儲(chǔ)單位是字節(jié)。

按字節(jié)編址的計(jì)算機(jī)較為通用,兼容性更好;

而按字編址的計(jì)算機(jī)的兼容性沒(méi)有那么好了,因?yàn)楫?dāng) CPU 的字長(zhǎng)發(fā)生變化時(shí),計(jì)算機(jī)的基本存儲(chǔ)單位都會(huì)發(fā)生變化,但是它可尋址的存儲(chǔ)空間更大,因?yàn)樗囊粋€(gè)地址對(duì)應(yīng)著是 32 位/64 位數(shù)據(jù),而按字節(jié)編址的一個(gè)地址對(duì)應(yīng)的只有一個(gè)字節(jié)(8 位)的數(shù)據(jù)。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10901

    瀏覽量

    212763
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7534

    瀏覽量

    88502
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    對(duì)MCU的CAN節(jié)點(diǎn)進(jìn)行

    1. 案例概述  在制作在線升級(jí)軟件的CAN通信協(xié)議時(shí),為了能夠?qū)Χ鄠€(gè)MCU進(jìn)行同時(shí)升級(jí),并且可靠地獲取每個(gè)MCU的升級(jí)狀態(tài),需要對(duì)MCU的CAN節(jié)點(diǎn)進(jìn)行。  假如我們只想實(shí)現(xiàn)每次僅僅升級(jí)一個(gè)
    發(fā)表于 08-06 07:16

    一個(gè)具有20位地和32位字長(zhǎng)的存儲(chǔ)器能存儲(chǔ)多少個(gè)字節(jié)的信息

    一個(gè)具有20位地和32位字長(zhǎng)的存儲(chǔ)器能存儲(chǔ)多少個(gè)字節(jié)的信息?需要多少位地址作芯片選擇?
    發(fā)表于 10-26 07:52

    如何對(duì)MCU的CAN節(jié)點(diǎn)進(jìn)行

    如何對(duì)MCU的CAN節(jié)點(diǎn)進(jìn)行呢?STM系列芯片的UDID特點(diǎn)有哪些呢?
    發(fā)表于 11-04 06:43

    AVR系列單片機(jī)內(nèi)部有三種類型的被獨(dú)立的存儲(chǔ)器

    AVR 系列單片機(jī)內(nèi)部有三種類型的被獨(dú)立的存儲(chǔ)器,它們分別為:Flash 程序存儲(chǔ)器、內(nèi)部SRAM 數(shù)據(jù)存儲(chǔ)器和EEPROM 數(shù)據(jù)存儲(chǔ)器[1]。Flash 存儲(chǔ)器為1K~128K 字節(jié),支持并行
    發(fā)表于 11-23 08:22

    的尋址范圍計(jì)算步驟

    的尋址范圍計(jì)算步驟:256M字節(jié)=256 *1024 * 1024 * 8位,計(jì)算機(jī)
    發(fā)表于 01-05 08:21

    內(nèi)存的方法

    一、內(nèi)存和尋址、內(nèi)存對(duì)齊1、內(nèi)存的方法內(nèi)存在邏輯上就是一個(gè)一個(gè)的格子,這些格子可以用來(lái)裝東西(里面裝的東西就是內(nèi)存中存儲(chǔ)的數(shù)),每個(gè)格子有一個(gè)編號(hào),這個(gè)編號(hào)就是內(nèi)存地址,這個(gè)內(nèi)
    發(fā)表于 02-11 06:57

    SDRAM和NOR FLASH屬于CPU的統(tǒng)一空間嗎

    CPU怎樣才能去訪問(wèn)NAND FLASH控制器呢?SDRAM和NOR FLASH屬于CPU的統(tǒng)一空間嗎?
    發(fā)表于 03-01 06:32

    請(qǐng)問(wèn)字節(jié)沒(méi)接入內(nèi)存芯片的用作字內(nèi)尋址的那幾根地址線在mar里嗎?

    如果在,那mar一個(gè)地址對(duì)應(yīng)一個(gè)字節(jié),而mdr又不是一個(gè)字節(jié)的大小,那mar乘mdr就不是內(nèi)存容量了啊如果不在,那具體過(guò)程是不是以下說(shuō)法字節(jié)
    發(fā)表于 08-28 16:13

    請(qǐng)問(wèn)51單片機(jī)如何統(tǒng)一?

    51單片機(jī)如何統(tǒng)一?
    發(fā)表于 10-18 07:58

    空分多(SDMA),空分多(SDMA)是什么意思

    空分多(SDMA),空分多(SDMA)是什么意思 空分多(SDMA):這種技術(shù)是利用空間分割構(gòu)成不同的信道。舉例來(lái)說(shuō),在一顆衛(wèi)星上使用
    發(fā)表于 04-03 13:40 ?3560次閱讀

    IP介紹

    TCP-IP詳解卷2 IP,學(xué)習(xí)TCP很好的資料。歡迎下載。
    發(fā)表于 05-09 14:33 ?0次下載

    51單片機(jī)存儲(chǔ)器擴(kuò)展的技術(shù)詳細(xì)介紹

    所謂,就是使用單片機(jī)地址總線,通過(guò)適當(dāng)?shù)倪B接,最終達(dá)到一個(gè)地址唯一對(duì)應(yīng)一個(gè)選中單元的目的。進(jìn)行存儲(chǔ)器擴(kuò)展時(shí),可供使用的方法有兩種:線選法和譯碼法。
    發(fā)表于 07-05 17:41 ?0次下載
    51單片機(jī)存儲(chǔ)器擴(kuò)展的<b class='flag-5'>編</b><b class='flag-5'>址</b>技術(shù)詳細(xì)介紹

    如何采用51單片機(jī)設(shè)計(jì)出總線電路

    帶總線擴(kuò)展接口的單片機(jī)系統(tǒng),包括外部32kRAM擴(kuò)展、LCDl602接口、輸入輸出口。帶擴(kuò)展的單片機(jī)最小系統(tǒng)電路如下圖所示。使用74HC573鎖存低8位地;74138實(shí)現(xiàn)8個(gè)地址擴(kuò)展
    發(fā)表于 04-25 17:29 ?2186次閱讀
    如何采用51單片機(jī)設(shè)計(jì)出總線<b class='flag-5'>編</b><b class='flag-5'>址</b>電路

    傳值、傳、傳引用的區(qū)別,哪個(gè)更高效?

    傳值、傳、傳引用的區(qū)別,哪個(gè)更高效?
    的頭像 發(fā)表于 06-29 15:05 ?6453次閱讀

    設(shè)計(jì)電氣原理圖時(shí)如何做到PLC高效自動(dòng)?

    PLC輸入輸出點(diǎn)錄入地址的工作方式并不高效,也與EPLAN高效工程的理念背道而馳。 那么在EPLAN的平臺(tái)上,我們是如何解決PLC地址這個(gè)問(wèn)題的呢?下面我們就一起看一下吧。PLC
    的頭像 發(fā)表于 05-26 09:30 ?2134次閱讀
    設(shè)計(jì)電氣<b class='flag-5'>原理圖</b>時(shí)如何做到PLC高效自動(dòng)<b class='flag-5'>編</b><b class='flag-5'>址</b>?