[問題] 請教一個計算機的問題

看板Electronics作者 (夏夜晚風)時間10年前 (2015/08/02 00:51), 編輯推噓3(3023)
留言26則, 6人參與, 最新討論串1/1
想要請問各位大大一個計算機的基本問題 是不是所有的CPU設計 都是把CPU看到的一個address對應的資料定義成一個byte(8 bit)? 請問有甚麼理由呢? 會這樣問的原因是 例如現在ARM是32 bit的CPU 我在去抓instrustion回來的時候 理論上我可以從CPU給出一個address 去access一個外部有32 bit IO bus的memory (假設ARM core的 memory interface也是32 bit data IO) 如此 我就可以每次program counter都只+1 就能順序從外部memory讀進連續的32 bit instruction 但是我看到ARM的設計(或是MIPS) 都是PC=PC+4 也就是CPU認為的一個address還是對應到一個byte 所以必須一次跳4個address 我比較好奇的是 這樣做的話 如果外部接的memory是32 bit IO bus 那address連到這個memory的 address[1:0] 都要變成 don't care 也就是說 CPU address [x:2] = memory [y:0] 來滿足內部一次跳4個address的設計 有甚麼理由需要這樣做 而不設計成PC=PC+4的設計呢? 是因為要相容以前的設計嗎? 感謝回答~~ ^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.77.57 ※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1438447917.A.BA5.html

08/02 01:16, , 1F
外面的memory也是32bit bus/8bit address啊
08/02 01:16, 1F

08/02 01:16, , 2F
方便存取不到32bit的資料(雖然會慢一點)
08/02 01:16, 2F

08/02 09:08, , 3F
沒什麼特別理由吧 兩種設計都可以
08/02 09:08, 3F

08/02 09:58, , 4F
data 不見得是 32-bit aligned,比如說 24-bit 全彩圖
08/02 09:58, 4F

08/02 09:59, , 5F
你可以堅持 32-bit aligned (如較早期的 CUDA)
08/02 09:59, 5F

08/02 10:00, , 6F
但那會製造很多麻煩,還得先整批讀進來再重排資料
08/02 10:00, 6F

08/02 22:26, , 7F
Hi S大 所以說即使內部是32 bit reg 外部也是32 bit IO
08/02 22:26, 7F

08/02 22:27, , 8F
還是會使用一個address對應一個byte的方式嚕?
08/02 22:27, 8F

08/02 22:31, , 9F
如果像ARM這種是固定32 bit的ISA,ROM還需要用byte當
08/02 22:31, 9F

08/02 22:31, , 10F
一個address的對應單位嗎?
08/02 22:31, 10F

08/02 22:50, , 11F
ROM 不見得只存 code, MOV byte 的來源/目標可以是 ROM
08/02 22:50, 11F

08/02 22:52, , 12F
硬體上還是直接對外部記憶體 access 一個 32-bit word
08/02 22:52, 12F

08/02 22:53, , 13F
但軟體上是不是就得標明這個 byte 的 address ?
08/02 22:53, 13F

08/02 23:10, , 14F
我比較好奇的是硬體實現的方法 假使現在CPU要去access
08/02 23:10, 14F

08/02 23:11, , 15F
一個外部具有32 bit IO bus的memory 假如是讀0X00000000
08/02 23:11, 15F

08/02 23:12, , 16F
那現在讀進CPU的會是32 bit還是8 bit?
08/02 23:12, 16F

08/02 23:13, , 17F
然後 有沒有可能是CPU去access 0X00000001~3?
08/02 23:13, 17F

08/02 23:13, , 18F
還是下次就是要跳0X00000004?
08/02 23:13, 18F

08/02 23:18, , 19F
硬體上是對 memory 讀 32-bit (0x00000000~0x00000003)
08/02 23:18, 19F

08/02 23:19, , 20F
有 cache 的話會存在 cache 裡 (ARM 似乎可以沒有cache)
08/02 23:19, 20F

08/04 11:07, , 21F
你要的是286/386硬體書,詳細選以下2檔所指章節:
08/04 11:07, 21F

08/04 11:07, , 22F
08/04 11:07, 22F

08/04 11:08, , 23F
08/04 11:08, 23F

08/04 11:08, , 24F
等你完全明白時就沒什麼太多困擾了
08/04 11:08, 24F

08/04 11:10, , 25F
err: 選 --> 讀
08/04 11:10, 25F

08/05 17:17, , 26F
這是歷史因素 早期8bit cpu形成template 後人基於此再加
08/05 17:17, 26F
文章代碼(AID): #1LlFajkb (Electronics)