如何选择自制CPU的说明?

时间:2017-05-17 21:11:18

标签: instruction-set

我正在设计一个能够加法和减法的最小家庭酿造CPU(用于娱乐和学习)。

 P->|       |---------->P
 A->|  ___  |---------->A
 0->|-|   | |---------->T
      |ADD|-|->ROM-->|
 R->|-|___| |->RAM<->|
 N->|                |->R
 0->|                |->N
 T------------------>|->I

I是指令寄存器。加法器能够直接计算地址,但也可以用于通用算术,但结果必须通过T临时寄存器到达RAM。

R是读取寄存器(红色,不是簧片)。 N是iNverted寄存器,其时钟信号与R相同,但输出~R

这有点奇怪,因为地址总线一直由加法器驱动。此数据路径配置旨在允许有用的指令序列,例如:

fetch: [P++]->I 
addi:  [P++]->R; A+R->A
add:   [P++]->R; [R]->R; A+R->A
load:  [P++]->R; R->A
store: A->T; [P++]->A; T->[A]  // A is clobbered
store: A->T; [P++]->A; T->[A]; T->R; R->A
jump:  [P++]->R; P+R->P
move:  [P++]->R; [R]->T; [P++]->R; R->A; T->[A]

控制系统需要生成以下启用/读取信号:PenAenRenNenTen,{{1} }。

还需要以下时钟/锁存/写入信号:MEMrdPckAckRNckTck

除此之外,加法器的MEMwr(进位)也需要一个信号,因为减法实现为CinA - R == A + N + 1

目前共有12位信号,因此有4096种可能的组合。

如何计算这4096条指令中哪一条最常用,以便我可以为指令寄存器设计解码逻辑?

最好只是坚持实施累加器 - 机器指令集,一次一条指令,还是有更好的策略?

P.S。有条件的指示仍在进行中......

0 个答案:

没有答案