作者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/cn.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