发明名称 实现数字信号处理器的寻址模块
摘要 一种计算机体系结构领域的实现数字信号处理器的寻址模块结构,包括:地址计算单元和与之相连的寻址寄存器堆,地址计算单元输出更新地址至寻址寄存器堆并接收当前地址及控制信号,本发明都能够在一个时钟周期内完成地址的计算,且具有极小的电路延迟,满足了高性能信号处理器对于高运算速度的要求。
申请公布号 CN102163141B 申请公布日期 2013.11.06
申请号 CN201110068802.2 申请日期 2011.03.22
申请人 上海交通大学;富士通株式会社 发明人 卫振琦;孔吉;刘佩林
分类号 G06F9/34(2006.01)I 主分类号 G06F9/34(2006.01)I
代理机构 上海交达专利事务所 31201 代理人 王锡麟;王桂忠
主权项 一种实现数字信号处理器的寻址模块,包括:地址计算单元和与之相连的寻址寄存器堆,其特征在于:地址计算单元输出更新地址至寻址寄存器堆并接收当前地址及控制信号;所述的地址计算单元由若干个与寻址寄存器堆相连的地址计算模块组成,该地址计算模块输出数字信号处理器用来访存的一路或多路地址,其中:地址计算单元从寻址寄存器堆接收控制信号和当前地址,并将新偏移量和新比特翻转偏移量输出至寻址寄存器堆;所述的寻址寄存器堆由寻址寄存器和控制寄存器组成;所述的寻址寄存器由当前地址寄存器、基地址寄存器、步长寄存器、范围寄存器、偏移量寄存器和比特翻转偏移量寄存器组成,其中:当前地址寄存器实现输出地址并保存计算得到的更新地址,基地址寄存器实现保存并输出基地址,步长寄存器实现保存并输出步长,范围寄存器实现保存并输出范围,偏移量寄存器实现输出偏移量并保存计算得到的新偏移量,比特翻转偏移量寄存器实现输出比特翻转偏移量并保存计算得到的新比特翻转偏移量;控制寄存器为寻址模式寄存器,实现保存并输出寻址模式控制信号;所述的寻址寄存器堆将地址和控制信号输出至地址计算单元,同时从地址计算单元接收计算得到的更新地址、新偏移量和新比特翻转偏移量,存储至寻址寄存器;所述的地址计算模块包括:五个加法器、两个保留进位加法器、两个比特翻转逻辑单元和若干个多路选择器,其中:第一加法器实现在顺序寻址或循环寻址时生成候选的更新地址,其两个输入端分别接收寻址寄存器堆输出的当前地址和步长且输出端与第一多路选择器的第一输入端相连;第二加法器实现在循环寻址时生成候选的更新地址,其两个输入端分别连接到第一保留进位加法器的两个输出端且输出端与第一多路选择器的第二输入端相连;第三加法器实现生成候选的新偏移量和候选的新比特翻转偏移量,其第一输入端接收寻址寄存器堆输出的步长,第二输入端与第二多路选择器的输出端相连且输出端分别与第一比特翻转逻辑单元的输入端、第三多路选择器的第一输入端、第四多路选择器的第一输入端和第五多路选择器的第一输入端相连;第四加法器实现生成候选的新偏移量,其两个输入端分别与第二保留进位加法器的两个输出端相连且输出端分别与第三多路选择器的第二输入端和第四多路选择器的第二输入端相连;第五加法器实现在比特翻转寻址时生成候选的更新地址,其第一输入端接收寻址寄存器堆输出的基地址,第二输入端与第一比特翻转逻辑单元的输出端相连且输出端与第一多路选择器的第三输入端相连;第一保留进位加法器以及第二保留进位加法器均实现在循环寻址时将三个输入端的数据相加得到两个输出数据,第一保留进位加法器的输入端分别接收寻址寄存器堆输出的当前地址、步长和范围;第二保留进位加法器的输入端分别接收寻址寄存器堆输出的步长、范围和偏移量;第一比特翻转逻辑单元实现在比特翻转寻址模式时生成候选的新偏移量,其输出端与第三多路选择器的第三输入端相连;第二比特翻转逻辑单元实现在顺序寻址或循环寻址时生成候选的新比特翻转偏移量,其输入端与第四多路选择器的输出端相连,输出端与第五多路选择器第二输入端相连;第一多路选择器实现生成更新地址;第二多路选择器实现生成第三加法器的输入数据,其两个输入端分别接收寻址寄存器堆输出的偏移量和比特翻转偏移量;第三多路选择器实现生成新偏移量;第四多路选择器实现生成第二比特翻转逻辑单元的输入数据;第五多路选择器实现生成新比特翻转偏移量;进行顺序寻址时,第一多路选择器选通第一加法器的输出端,第二多路选择器选通偏移量,第三多路选择器选通第三加法器的输出端,第四多路选择器选通第三加法器的输出端,第五多路选择器选通第二比特翻转逻辑单元的输出端,所以更新地址为第一加法器的输出,即next_addr = addr +/‑ inc;新偏移量为第三加法器的输出,即next_offset = offset +/‑ inc;新比特翻转偏移量为第二比特翻转逻辑的输出,即next_BRoffset = BR( offset +/‑ inc ),寻址寄存器堆将保存这些计算结果,并在下次计算地址时为地址计算模块提供当前地址、偏移量和比特翻转偏移量;其中:inc为地址步长,addr为当前地址,offset为偏移量即当前地址减去基地址,next_addr为生成的更新地址,next_offset为新偏移量,next_BRoffset为新比特翻转偏移量,BR()代表比特翻转操作;进行循环寻址时,第二多路选择器选通偏移量,第五多路选择器选通第二比特翻转逻辑单元的输出端,其他多路选择器的选通情况由寻址方式和部分加法器的输出端的正负状态决定;当寻址模式为循环寻址加步长时,第四加法器的输出为offset + inc ‑ range,当该输出为负,则说明当前地址加步长仍在循环寻址区域内,此时第一多路选择器选通第一加法器的输出端,所以next_addr = addr + inc;第三多路选择器选通第三加法器的输出端,所以next_offset = offset + inc;第四多路选择器选通第三加法器的输出端,所以next_BRoffset = BR( offset + inc );当第四加法器的输出为非负,则说明当前地址加步长已经超过了循环寻址区域的上限,此时第一多路选择器选通第二加法器的输出端,所以next_addr = addr + inc ‑ range;第三多路选择器选通第四加法器的输出端,所以next_offset = offset + inc ‑ range;第四多路选择器选通第四加法器的输出端,所以next_BRoffset = BR( offset + inc ‑ range );其中:range为循环寻址的范围;当寻址模式为循环寻址减步长时,第三加法器的输出为offset ‑ inc,当该输出为非负,则说明当前地址减步长仍在循环区域内,此时第一多路选择器选通第一加法器输出端,所以next_addr = addr ‑ inc;第三多路选择器选通第三加法器的输出端,所以next_offset = offset ‑ inc;第四多路选择器选通第三加法器的输出端,所以next_BRoffset = BR( offset ‑ inc );当第三加法器的输出为负,则说明当前地址减步长已经超过了循环寻址区域的下限,此时第一多路选择器选通第二加法器的输出端,所以next_addr = addr ‑ inc + range;第三多路选择器选通第四加法器的输出端,所以next_offset = offset ‑ inc + range;第四多路选择器选通第四加法器的输出端,所以next_BRoffset = BR( offset ‑ inc + range );进行比特翻转寻址时,第一多路选择器选通第五加法器的输出端,第二多路选择器选通比特翻转偏移量,第三多路选择器选通第一比特翻转逻辑单元的输出端,第四多路选择器任意选通,第五多路选择器选通第三加法器的输出端。
地址 200240 上海市闵行区东川路800号