lcytms
发表于 2018-4-1 20:46:49
0951
主机有命令和地址的输出端,从机有命令和地址的输入端,没有相反。
而主从都有数据的输入和输出。
好,现在我把虚线擦掉,加上加速器。
加速器,accelerator。
它既是主机,又是从机。
它是双重角色。
当它未获得授权的时候,加速器就是从机,就是仆人,跟任何仆人的地位完全相等。
lcytms
发表于 2018-4-1 20:47:56
0952
当它获得授权以后,它会成为主机,它要跟原来的老大要竞争资源。
在我们这个例子里面,只有唯一的一个仆人。
就是Memory。
要竞争这个Memory。
现在我们来看看,对于加速器该怎么做?
由于它是主机,所以说它就应该有主机的一些职能,主机的端口。
地址和命令,写成acc前缀,有地址的输出。
lcytms
发表于 2018-4-1 20:49:17
0953
命令,是主机,它能发命令。
当它成为主机的时候,它能够发出地址和命令。
当它成为从机的时候,它要能够接收地址和命令。
什么时候是从机呢?
ACC未获得授权的时候,它要被CPU访问,CPU要告诉它一些信息。
acc_addr_in,acc_cmd_in。
主机有的它有,从机有的它也有。
另外主从都应该有的东西就是数据的输入和输出。
主从都有数据输入和输出端。
它当然也要有acc_data_out。
lcytms
发表于 2018-4-1 20:50:27
0954
主机有的它有,从机有的它也有。
主从都有的它当然也要有。
这ACC应该长成这个样子。
刚才我擦掉的是CPU跟Memory之间的连接关系。
CPU跟Memory之间的连接关系,虚线我绘制的时候,什么时候它会用呢?
当主机获得资源的时候。
主机什么时候获得资源呢?
在我们这个例子里面,应该大多数时候主机都获得Memory的支配权。
就是我刚才擦掉的虚线部分。
lcytms
发表于 2018-4-1 20:52:19
0955
因为主机指令在这里面,如果按照这么来做的话,指令在这里面。
CPU在执行它运算的过程之中,我们知道要不停地读指嘛,所以CPU要接管这个Memory的。
这个时候Memory听CPU的指挥。
当CPU要控制ACC的时候,ACC实际上也是跟Memory一样,是获得相同的支配的地位。
这个时候Memory的地址总线,ACC的地址总线,都是受CPU的地址总线控制的。
cpu_addr_out接到这。
这时候Memory接受主机的访问,接受CPU的访问。
ACC也接受主机的访问。
它们的地位是相等的。
这个时候ACC是以从机的形式存在的。
mem_cmd_in和acc_cmd_in都要接到cpu_cmd_out。
mem_addr_in和acc_addr_in都要接到cpu_addr_out。
lcytms
发表于 2018-4-1 20:53:05
0956
这个时候CPU会通过它的地址和命令来访问Memory和ACC。
究竟CPU访问的是Memory,还是ACC,怎么定的呢?
lcytms
发表于 2018-4-1 20:53:53
0957
不同的地址,有个地址映射表。
它有它的地址范围,它有它的地址范围。
所以说这个时候ACC的地位和memory完全相等。
于是呢,CPU可以通过这种方式,访问ACC内部的寄存器。
这些寄存器的地位就是外部设备,用唯一的地址指定来做访问。
比如说像状态寄存器,像源地址寄存器、目标地址寄存器,等等。
这些呢,都是由CPU通过完全相等的方式,来访问Memory和ACC。
这是ACC是以从机的形式存在的。
当ACC通过这种方式,CPU向ACC的状态寄存器发出了一次委托执行长整加速的任务,向它的状态寄存器写出了start以后,加速器ACC就获得了授权。
lcytms
发表于 2018-4-1 20:55:15
0958
获得对Memory控制的授权,它要对Memory以硬件的方式,一拍都不空闲,全力以赴地完成长整计算。
8864嘛。
源8个,目标8个,这个时候,ACC要访问它。
现在我们来看看,在这种情况之下,加速器应该怎么做?
或者加速器的共性。
我刚才说了,这个时候的资源要被切换。
就是Memory的资源,Memory是唯一的仆人,这个时候Memory听谁的呢?
一仆二主。
这个时候是由外部的一个第三方机构仲裁器来决定。
稍后我们在word上做,现在随便画一下。
lcytms
发表于 2018-4-1 20:56:28
0959
仲裁器有什么特点呢?
就是由资源的请求者,发出请求,然后根据仲裁器来决定仲裁给谁。
这是仲裁结果arb_res。
仲裁结果是它的输出。
它有请求信号。
它有两个请求。
有谁的请求呢?
有CPU的请求。
只有主机才会发出对资源的请求。
lcytms
发表于 2018-4-2 08:47:23
1000
主机可能是两个,CPU的请求,ACC的请求。
CPU要请求,ACC要请求。
当然是通过硬件方式,所以说CPU要增加一个输出端口,cpu_req。
主机有资源请求的端口,从机不可能有,Memory不可能有。
页:
1
2
3
4
5
[6]
7
8
9
10
11
12
13
14
15