lcytms
发表于 2018-8-25 09:43:48
1042
这个流水线,是真正的pipeline。
但是含义跟同步电路里的流水线还是有所不同。
这边的流水线pipeline,指的是主从之间的传输。
主从之间进行存储器映射的时候是发送有地址的。
每一个地址,每一次传输的读写命令是连续进行的。
第一拍读一个地址,第二拍读另外一个地址。
实际上这种传输呢,在我们以前写静态存储器的时候,大多都是这样,我们可以随机地访问嘛。
第一拍读一个地址,第二拍读另外一个地址。
在接口上,流水线的传输是非常的典型。
lcytms
发表于 2018-8-25 09:44:26
1043
流水线的传输指的是什么呢?
就是指的,在传输的过程之中,数据、地址是连续进行传输的,连续传输仍然用到pipeline这个词。
这个时候就会有一个特殊的状态了,就是称之为Wait-State和流水线潜伏期Pipline latency。
这个PPT理解起来可能有点问题。
我们还是讲一个故事。
刚才我们讲了两个故事,一个是储蓄所业务,是典型的存储器传输的握手waitrequest。
第二个呢,是固定周期的,我们用工商所的业务。
而对于流水线传输,我们讲一个车管所的业务。
lcytms
发表于 2018-8-25 09:45:04
1044
当我们到车管所考驾照的时候,当你报名登记了以后,车管所有你的档案,它知道你要来学车拿本。
但是它不同于储蓄所。
它不可能你排队,立刻就给你发的。
这是第一点。
它不同于储蓄所。
第二,它也不同于工商所。
当你登记了以后,它绝对不会象工商所那样,一周以后过来给你发本。
lcytms
发表于 2018-8-25 09:45:46
1045
它不同于工商所,它不是一个固定周期。
而是登记了以后,它知道你要办什么业务,但是它要有一个可变潜伏期。
它要有一个非常长的阶段。
这个可变潜伏期,你要考科目一、科目二、科目三、科目四。
每一个科目都要过。
有些科目过得快,有些科目可能有些障碍,反反复复地去考。
有的时候两三个月,半年,甚至更长时间都有。
这就变成了一个可变潜伏期。
说不好,是不是?
lcytms
发表于 2018-8-25 09:46:31
1046
你是主机,你是发布命令的主导者。
给你发本的车管所,这个时候它是从机。
它不能给你确定下来,什么时候给你返回信息。
这个阶段称之为可变潜伏期。
流水线潜伏期Pipline latency就是,当你申请了学车以后,什么时候拿本了,那个潜伏期。
而不同之处,仍然有一个等待周期Wait-State。
这个等待周期,跟储蓄所一模一样。
比如说你到车管所去报名,前面有很多人排队。
这个时候是一样的。
所以说你到车管所去学车的时候,有两种业务,第一种业务就是waitrequest,就是储蓄所的业务。
你仍然要排队要取号。
lcytms
发表于 2018-8-25 09:47:57
1047
取号登记以后,车管所才知道你要办理什么业务,才知道你是要学C本,还是要学A本。
没有叫到你之前,车管所还是不知道你要干什么。
所以说等待状态仍然有。
过了等待状态,车管所知道你要干什么了,但是绝对不会立即给你发本,也不会告诉你固定的周期,而是要过科目一、科目二、科目三、科目四。
所以说这个是等待状态和流水线潜伏期的区别。
Altera的Avalon的流水线,它只支持流水线的读,并不支持流水线的写,等会我们再来解释。
lcytms
发表于 2018-8-25 09:48:55
1048
流水线的读,每一拍读一个数,可以是走它的流水线。
既然是读嘛,主机和从机之间,就只有从机返回给主机的数据,而没有主机给从机的写数据,并不支持流水线的写。
主机会发给从机的控制信号,仍然是读控制信号,主机说了算。
说读就读,说不读就不读。
主机仍然是主控的。
说走就走说停就停。
并且呢,在读的时候要给出地址,是存储器映射嘛。
而从机呢,这个时候会反制主机的控制信号,有两个,一个是waitrequest,是储蓄所业务。
就是说,叫号没叫到你的时候,它忙了,你得等着。
lcytms
发表于 2018-8-25 09:50:25
1049
你到车管所去学车的时候,排队,你得先登记啊。
登记的时候前面有很多人。
你拿到号你得等着。
这个时候车管所不知道你要干什么,它不知道你要做什么样的请求。
你得等着。
Readdatavalid,这个信号就是流水线潜伏期了。
这个信号是什么意思呢?
这个信号是车管所已经知道你要干什么了。
就是waitrequest已经过了,已经登记了。
什么时候发本呢?
取决于你过的科目了。
直到科目四全部通过了,给你叫号给你发本。
Readdata。
所以说这个时候,从机反制主机的有两个信号,就是waitrequest和readdatavalid。
而主机仍然是用它的主导信号,读信号来控制从机。
主从之间都有发出叫停的权利,有响应叫停的义务。
我们先把这张时序图分析完。
lcytms
发表于 2018-8-25 09:51:13
1050
在时刻1,主机发出了第一个地址。
第一个地址对应的是第一个数据。
Addr1对应的是data1。
是读。
主机发出了Addr1,发出了读命令。
在第一拍上,从机发的是waitrequest,右侧逼近是一个低电平。
说明从机不忙,刚好车管所排队登记,这个时候没有人。
这样到第二拍,主机捕获到waitrequest为低电平。
lcytms
发表于 2018-8-25 09:51:54
1051
主机就知道,它第一拍发出的读请求,从机已经应答了,车管所已经接受了你的请求。
于是主机可以做什么事情呢?
主机可以将它的读命令撤销掉,或者接着发新的读命令。
在这个时序图上,第二拍,由于捕获到waitrequest为低电平,接着主机发第二个读请求,第二个地址,同时从机在第二拍上发出了readdatavalid。
Readdatavalid就是我们说的拿本的那个信号。
当然这个太快了,跟故事有些差异。
在第二拍上,readdatavalid从机发出了数据的应答信号,因为它不忙,立即就把数据就给了。