1010
我们夏老师的这个教材代码里面,我们用了时分的概念。
现在用时分的很少了。
都是做多组件,CPU肯定会有事的。
我们现在做练习,我们真正让它空闲了。
CPU空闲了,这个时候ACC全力以赴地访问它,以硬件的方式来访问memory,完成这次长整运算。
ACC很快就能算完,计算完了以后,ACC如何来通知CPU呢?
当然也可以用查询的方式,但是现在总线的资源已经判给ACC了。
这个时候,CPU在我们现在做的这个练习里面,ACC是没有其它资源可用的,只有一种方式,就是用中断。
也就是说,ACC还要有一根线,必须发送中断。
当它计算完了以后,有中断的输出。
这个只有主从结构的加速器,才会有中断的输出端,而唯一的主机会有终端的输入端。
1011
上午呢,我们把所有的这些规律总结一下。
主机有命令和地址的输出端,没有输入端。
从机有地址和命令的输入端,没有输出端。
主从都有数据的输入和输出。
加速器既有主机的地址和命令的输出端,也有作为从机的地址和命令的输入端。
作为主从都有的数据的输入和输出,它也有。
然后呢,作为主机,有仲裁请求的输出端,两个主机有。
作为主机,有仲裁结果的输入端。
这个只有主机才有。
1012
作为加速器,作为主从结构的,有中断的输出端,唯一的主机有中断的输出端。
就这些规律。
先休息十分钟。
然后我们用一个word,用设计的方式,用分享的方式,来完成这个长整加速器。
(休息)
(设计报告)
本帖最后由 lcytms 于 2018-4-6 16:01 编辑
1127
这个架构是支持的,下面我们就讨论它的精确的实现。
讨论它的精确的实现的时候,我们要知道,如果是一个逻辑来做这些选择,就是做这六种选择,它需要知道哪些信号。
要知道仲裁,要知道命令,命令是做读还是做写。
是不是?
所以说,它要知道这些信号,要知道当前的仲裁结果,要指导当前的控制。
1128
如果当前仲裁给CPU的,而CPU是发出的写命令有效,当然是CPU要写Memory了,或者CPU要写ACC。
当仲裁结果是给ACC的,当ACC是要执行写的时候,当然是写Memory了。
当ACC或者仲裁write是假的时候,当然是ACC读memory了。
由此,需要得到这些判断,但是有一件事,就是我们刚才说的这两个信号,是得不到的。
这两个信号,一个是仲裁结果,一个是命令的总线,是做ACC的write,还是做CPU的write。
cpu_write_out,acc_write_out,和仲裁结果这三根线,有一件事不能确定。
1129
其它的都能确定。
就是ACC读写memory它能确定,CPU是不是读写memory能确定。
但是CPU读写memory和CPU读写ACC是同一个动作,就是CPU读写memory和CPU读写ACC的时候,这个时候仲裁结果都是给CPU的。
而CPU发出的write是一样的,要么write为假,要么write为真。
就是CPU如何来甄别CPU是读写memory还是读写ACC呢?
对,地址,所以说,要获得地址的译码。
当前的地址范围,系统要给出一个表,是访问的是ACC,这个时候要判给ACC。
访问的是memory,要判给CPU访问Memory。
1130
有这些讨论,下面我们就来制作逻辑了。
首先我们要做一个mux的encoder。
复制一个矩形框。
这个我们要用开节点,因为我们的潜伏期都是单拍潜伏期。
1131
做编码器。
1132
Sdmux是1:0。
1133
Swmux。
