作者CCMAKE (夏夜晚風)
看板Electronics
標題[問題] 請教一個計算機的問題
時間Sun Aug 2 00:51:54 2015
想要請問各位大大一個計算機的基本問題
是不是所有的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://webptt.com/m.aspx?n=bbs/Electronics/M.1438447917.A.BA5.html
1F:→ kdjf: 外面的memory也是32bit bus/8bit address啊 08/02 01:16
2F:→ kdjf: 方便存取不到32bit的資料(雖然會慢一點) 08/02 01:16
3F:推 cpyi: 沒什麼特別理由吧 兩種設計都可以 08/02 09:08
4F:→ Schottky: data 不見得是 32-bit aligned,比如說 24-bit 全彩圖 08/02 09:58
5F:→ Schottky: 你可以堅持 32-bit aligned (如較早期的 CUDA) 08/02 09:59
6F:→ Schottky: 但那會製造很多麻煩,還得先整批讀進來再重排資料 08/02 10:00
7F:→ CCMAKE: Hi S大 所以說即使內部是32 bit reg 外部也是32 bit IO 08/02 22:26
8F:→ CCMAKE: 還是會使用一個address對應一個byte的方式嚕? 08/02 22:27
9F:→ CCMAKE: 如果像ARM這種是固定32 bit的ISA,ROM還需要用byte當 08/02 22:31
10F:→ CCMAKE: 一個address的對應單位嗎? 08/02 22:31
11F:→ Schottky: ROM 不見得只存 code, MOV byte 的來源/目標可以是 ROM 08/02 22:50
12F:→ Schottky: 硬體上還是直接對外部記憶體 access 一個 32-bit word 08/02 22:52
13F:→ Schottky: 但軟體上是不是就得標明這個 byte 的 address ? 08/02 22:53
14F:→ CCMAKE: 我比較好奇的是硬體實現的方法 假使現在CPU要去access 08/02 23:10
15F:→ CCMAKE: 一個外部具有32 bit IO bus的memory 假如是讀0X00000000 08/02 23:11
16F:→ CCMAKE: 那現在讀進CPU的會是32 bit還是8 bit? 08/02 23:12
17F:→ CCMAKE: 然後 有沒有可能是CPU去access 0X00000001~3? 08/02 23:13
18F:→ CCMAKE: 還是下次就是要跳0X00000004? 08/02 23:13
19F:→ Schottky: 硬體上是對 memory 讀 32-bit (0x00000000~0x00000003) 08/02 23:18
20F:→ Schottky: 有 cache 的話會存在 cache 裡 (ARM 似乎可以沒有cache) 08/02 23:19
21F:推 POWERPC: 你要的是286/386硬體書,詳細選以下2檔所指章節: 08/04 11:07
24F:→ POWERPC: 等你完全明白時就沒什麼太多困擾了 08/04 11:08
25F:→ POWERPC: err: 選 --> 讀 08/04 11:10
26F:推 a881: 這是歷史因素 早期8bit cpu形成template 後人基於此再加 08/05 17:17