发明内容
本发明的目的是提供一种预约机制解决多路访问存储单元簇冲突的数字电路设计方法,其利用预约机制来避免多路访问时的访问冲突,高效安排存储单元簇访问请求的完成,在满足多路访问的各种需求的同时对应不同请求类型,存储类型,控制要求规划了一种统一的方法,并可以提高特定需求的处理效率。
本发明的上述技术目的是通过以下技术方案得以实现的:
一种预约机制解决多路访问存储单元簇冲突的数字电路设计方法,包括如下步骤:
S1:将存储单元簇的单元抽象为不同预约目标,建立预约表机制;
S2:多路请求查看预约表来决定、调整对各个预约目标访问的时间和时间长度,产生预约请求;
S3:预约仲裁器对预约请求进行预约冲突判断和发射预约请求;
S4:预约控制器从预约仲裁器收到所有发射的预约请求,并根据预约表信息代理访问、控制存储单元簇的各个存储单元;此外预约控制器根据预约仲裁器的结果及预约单元访问情况更新预约表;
S5:存储单元簇数据路径预先根据需求设计连接,并由预约控制器控制选通。
更进一步的,步骤S1中,预约表机制制定了每个预约目标在接下来一段时间T内的访问分配情况,即预约表信息。
更进一步的,步骤S3中,若存在预约目标的冲突,预约仲裁器从冲突预约请求中仲裁出一个成功的预约请求,和其他没有冲突的预约请求一并发射。
更进一步的,存储单元簇中存储单元之间存在有组合访问。
更进一步的,若请求希望突发读存储单元簇时,连续从三个存储单元A、B、C中连续返回数据送出处理,并在N个周期后将处理后的数据写入存储单元D、E中;
即在存储单元A的T0时刻,B的T1时刻,C的T2时刻返回数据,其中,T0、T1、T2为连续三个时钟周期;存储单元A、B、C的读时延分别为t0、t1、t2;
则分别预约T0-t0,T1-t1,T2-t2时刻访问存储单元A、B、C,再预约T2+N和T2+N+1的时间连续写入存储单元D、E中。
更进一步的,在预约表中储存单元D的T2+N时刻或储存单元E的T2+N+1时刻已经被预约的情况下,找到D、E皆未被预约的M和M+1时刻预约,并为延期写入的数据准备必要的BUFFER暂存和读写控制。
更进一步的,步骤S4中,预约仲裁器在比较各路预约请求及发生冲突时,根据预约仲裁优先级选出成功预约的请求;当预约请求发生冲突且权重相同时,预约仲裁器使用包括随机仲裁或round-robin仲裁在内的方式决定预约成功的请求发射;
预约失败或者查看预约表后发现无法预约的请求进入重试队列并提高其预约仲裁优先级,若干周期后重试。
更进一步的,对若干次重试仍然无法满足预约条件的请求获得最高权限,它获得所需预约目标的独占权限直到完成。
更进一步的,步骤S5中,预约控制器根据预约表信息来实现请求的代理访问及存储单元簇数据路径的控制,控制信息由预约表给出。
更进一步的,步骤S5中,存储单元簇数据路径建立于存储单元簇存在的通路和分支中,并提供控制逻辑。
综上所述,本发明具有以下有益效果:
1.本发明方法,可以通过只改变预约表信息、存储单元簇路径的逻辑就适应不同请求数量,请求类型,存储单元数量,存储单元类型等的要求;设计有更好的统一性,通用性和扩展性。
2. 本发明方法,有隔离复杂的控制逻辑和仲裁逻辑的作用,对于较复杂的存储单元簇访问设计来说,与未经优化的传统仲裁方法:为了满足复杂逻辑的时序而添加额外寄存器满足时序相比,本发明的方法设计划分更加明确清晰,更利于针对性的逻辑优化。
3. 本发明方法,相比纯粹未经优化的仲裁访问机制、对于一些特定的组合访问有更好的性能表现,例如,突发读写不会被打断,可一次性就完成从A存储单元突发读出,处理后,突发写回的过程,无需额外寄存器组(BUFFER)来暂存上述操作因为传统仲裁方法,仲裁失败等原因而被阻挡的等待读出或者写入的数据。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明,本实施例不构成对本发明的限制。
本发明揭示了一种预约机制解决多路访问存储单元簇冲突的数字电路设计方法,如图1和图2所示,相比于现有技术,本发明方法的仲裁逻辑和控制逻辑更加明确,其包括如下步骤:
S1:将存储单元簇的单元抽象为不同预约目标(若某存储单元支持多口同时读写,则可将该存储单元抽象为多个预约目标),建立预约表机制;
步骤S1中,预约表机制制定了每个预约目标在接下来一段时间T内的访问分配情况,即预约表信息。
S2:多路请求查看预约表来决定、调整对各个预约目标访问的时间和时间长度,产生预约请求;
S3: 预约仲裁器判断当前时刻所有预约请求并将无预约冲突的预约请求一并发射;若存在预约目标的冲突,预约仲裁器从冲突预约请求中只仲裁出一个成功的预约请求,和其他没有冲突的预约请求一并发射。
S4:预约控制器从预约仲裁器收到所有发射的预约请求,并根据预约表信息发射的预约请求来代理访问、存储单元簇的各个存储单元,及对存储单元簇数据路径进行控制;此外每个时刻,预约控制器根据预约仲裁器的结果及预约单元访问情况更新预约表;
如图2和3所示,步骤S4中,预约仲裁器在比较各路预约请求及发生冲突时,根据预约仲裁优先级选出成功预约的请求;当预约请求发生冲突且权重相同时,预约仲裁器使用包括随机仲裁或round-robin仲裁的方式决定预约成功的请求发射;
预约失败或者查看预约表后发现无法预约的请求进入重试队列并提高其预约仲裁优先级,若干周期后重试。
对若干次重试仍然无法满足预约条件的请求获得最高权限,它获得所需预约目标的独占权限直到完成。
S5:存储单元簇数据路径预先根据需求设计连接,并由预约控制器控制选通。
如图4所示,预约控制器根据预约表信息来实现请求的代理访问及存储单元簇数据路径的控制,控制信息由预约表给出。
存储单元簇数据路径建立于存储单元簇可能存在的通路和分支中,并提供控制逻辑,该通路和分支包括存储单元之间、单元簇入口、单元簇出口等。
存储单元簇中存储单元之间存在有组合访问。举例来讲,如图4和图5所示,若请求希望突发读存储单元簇时,连续从三个存储单元A、B、C(读时延可能不一致)中连续返回数据送出处理,并在N个周期后将处理后的数据写入存储单元D、E中;
即在存储单元A的T0时刻,B的T1时刻,C的T2时刻返回数据,其中,T0、T1、T2为连续三个时钟周期;存储单元A、B、C的读时延分别为t0、t1、t2;
则分别预约T0-t0,T1-t1,T2-t2时刻访问存储单元A、B、C,再预约T2+N和T2+N+1的时间连续写入存储单元D、E中。
在预约表中储存单元D的T2+N时刻或储存单元E的T2+N+1时刻已经被预约的情况下,找到D、E皆未被预约的M和M+1时刻预约,并为延期写入的数据准备必要的BUFFER暂存和读写控制。
如图4和图5所示,具体的,该设计有两路输入请求,三个存储单元,存储单元的读数据延时都为一个时钟周期。三路存储单元簇外部输出,两路存储单元簇外部输入。通过预约表机制,请求可以查询存储单元A、B、C的预约表信息,所需时刻若相应存储单元资源未被占用则可发射预约请求,通过预约仲裁,预约控制器会根据预约表信息来控制当前时刻存储单元A、B、C的读写访问,及它们的输入写数据及输出读数据的路径选择。然后根据最新的预约情况更新A、B、C存储单元预约表信息。
下面举一个访问实例:
初始,请求0的需求如下:
在T0时刻读存储单元A,将读出数据在T1时刻写入存储单元C,同时输出存储单元簇处理,在T2时刻处理数据从外部输入0返回再写入存储单元A;
在T1时刻读取存储单元B,将读出数据在T2时刻写入存储单元C同时输出存储单元簇处理,在T3时刻处理数据从外部输入0返回再写入存储单元B。
则请求0预约内容如下表所示:
|
T0 |
T1 |
T2 |
T3 |
T5 |
T6 |
T7 |
MemoryA |
req0rd |
|
out0wr |
|
|
|
|
MemoryB |
|
req0rd |
|
out0wr |
|
|
|
MemoryC |
|
memAwr |
memBwr |
|
|
|
|
同一时刻请求1的需求如下:
在T0时刻读存储单元B,将读出数据在T1时刻输出存储单元簇处理,在T2时刻处理数据从外部输入1返回再写入存储单元B中。
则请求1预约内容如下表所示:
|
T0 |
T1 |
T2 |
T3 |
T5 |
T6 |
T7 |
MemoryA |
|
|
|
|
|
|
|
MemoryB |
req1rd |
|
out1wr |
|
|
|
|
MemoryC |
|
|
|
|
|
|
|
当请求0和请求1的预约请求同时刻发往预约仲裁器,预约仲裁器判断不存在预约请求冲突,则预约仲裁器可以将预约请求0和预约请求1都交给预约控制器,预约控制器更新预约表信息如下:
|
T0 |
T1 |
T2 |
T3 |
T5 |
T6 |
T7 |
MemoryA |
req0rd |
|
out0wr |
|
|
|
|
MemoryB |
req1rd |
req0rd |
out1wr |
out0wr |
|
|
|
MemoryC |
|
memAwr |
memBwr |
|
|
|
|
到了T0时刻,则根据预约表信息,预约控制器会选择请求0的读请求发往存储单元A,请求1的读请求发往存储单元B。
假设在T0时刻有一个新的请求1希望T1时刻访问存储单元C,查询预约表发现T1、T2时刻存储单元C已经被占用。则该请求可以选择空闲的T3时刻访问存储单元C。根据新的预约仲裁器信息,预约控制器更新预约表信息如下:
|
T1 |
T2 |
T3 |
T5 |
T6 |
T7 |
MemoryA |
|
out0wr |
|
|
|
|
MemoryB |
req0rd |
out1wr |
out0wr |
|
|
|
MemoryC |
memAwr |
memBwr |
req1rd |
|
|
|
到了T1时刻,根据预约表信息,预约控制器会选择请求0的读请求发往存储单元A,写请求发往存储单元C,如图1控制选择信号,让存储单元C的写数据来自存储单元A的读出数据。
到了T2时刻,根据预约表信息,预约控制器会将写请求发往存储单元A,如图1控制选择信号,选择写数据来自存储单元簇外部输入0。会将写请求发往存储单元B,选择写数据来自存储单元簇外部输入1。会将写请求发往存储单元C,选择写数据来自存储单元B的读出数据。
假设在T2时刻同时有两个新的请求0和请求1都想在T3时刻访问存储单元A,请求0和请求1当前预约表都发现存储单元A在T3时刻没有被占用,则都发射了预约请求,预约仲裁器发现预约冲突,仲裁成功了预约请求0发射,则请求1进入重试队列,最后预约控制器更新预约表信息如下:
|
T3 |
T4 |
T5 |
|
|
|
|
MemoryA |
req0rd |
|
|
|
|
|
|
MemoryB |
out0wr |
|
|
|
|
|
|
MemoryC |
req1rd |
|
|
|
|
|
|
到了T3时刻,根据预约表信息,预约控制器会选择请求0的读请求发往存储单元A,写请求发往存储单元B,选择写数据来自存储单元簇外部输入0。选择请求1的读请求发往存储单元C。
以上所述,仅是本发明的较佳实施例而已,不用于限制本发明,本领域技术人员可以在本发明的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明技术方案的保护范围内。