引子
回顾一下上学期末做的用FPGA设计CPU的课程设计。
大纲都在李明老师的电子设计自动化课程设计。
什么是指令?
下达任务的信号,系统接收到信号以后就应该去执行这个任务(执行指令)。
包含操作码+操作数。
指令集
下达某项或简单或复杂的任务的信号的集合:一条指令完成简单的任务就是精简指令,精简指令的集合叫精简指令集RISC,Reduced。一条指令完成复制的任务就是复杂指令,复杂指令的集合就叫复杂指令集CISC,Complex。
可以看下下面的指令,每个指令完成一些简单的任务。
LDA: data from memory to alu : get memory,send to alu
human: LDA 11
machine: 000 01011
mean:将memory中地址编号为11的数据传给alu的累加器a[7…0]中
brief: a[7…0]=mem[11] 8bit
STA: data from alu to memory:
human: STA 11
machine: 001 01011
mean:将alu的累加器a[7…0]中的数据传给memory中地址编号为11的8个bit
brief: mem[11]=a[7…0]
ADD: data from memory to alu ,then alu calculate.
human: ADD 12
machine: 010 01100
mean:将memory中地址编号为11的数据传给alu的累加器中
brief: a=a+ mem[12]
其它不解释了,耐心看下很好理解。
一个小栗子
举一个加法例子mem[11]+mem[12]mem[13]
用这些指令我们就可以完成一个加法:’b10101010+’b01010101.
(1) 把mem[11]存储的数据放到a里
(2) 把mem[12]的数据通过ALU和a计算,计算结果放入a
(3) 把a中存储的结果放到mem[13]里-----这样我们就可以再把mem[11]&mem[12]的结果放到mem[14],把mem[11]-mem[12]的结果放到mem[15]里
计算机组成+CPU组成
计算机本质上无非就做了两件事:取指令,执行指令。
先说取指令:
在哪取?From where?指令总有个存储的地方吧,这就是主存储器的功效了。
取到哪?To Where?取到的指令:要放到解码器(暂且可以理解为IP------指令寄存器)去分解成操作码+操作数。
依