可配置状态机的实现方法、可配置状态机及终端设备与流程

文档序号:11386451阅读:372来源:国知局
可配置状态机的实现方法、可配置状态机及终端设备与流程
本发明涉及电子领域,特别涉及一种可配置状态机的实现方法、可配置状态机及终端设备。
背景技术
:共享变量的互斥访问一般需要多处理器系统中的处理器支持原子操作,这种原子操作需要处理器有专门的硬件支持才能完成。处理器支持的基本访存操作粒度一般包括单字节、双字节、四字节以及更多的字节数等,基本操作类型就是读和写,而基本原子操作类型有很多种,典型的有:交换操作(swap)、比较且交换操作(compareandswap,cas)、读后增(increaseafterload,loadinc)、读后减(decreaseafterload,loaddec)等等。理论上来说,所有映射到处理器可访问的数据地址空间上的片外存储器、片上存储器、cache、内存、甚至是寄存器都可能发生原子操作,我们将这些地址空间可以映射到的物理存储称之为“存储实体”,与这些存储实体直接相连的控制逻辑,称之为“存储控制器接口”。在ic设计中,存储控制器接口的上行逻辑中支持的访存操作类型和模式通常和存储实体接口支持的访存操作类型不一致,比如某个处理器实例中,前端ahb总线下面所接的存储控制器上的存储实体是一个单端口sram,我们知道ahb总线支持先读后写的原子操作,但是单端口sram并不支持同时读写操作,因此需要我们在sram存储控制器中实现一个存储访问的桥逻辑,该逻辑需要支持sram存储控制器上行逻辑的存储命令到下行逻辑存储命令的转换。发明语义本发明提供了一种可配置状态机的实现方法、可配置状态机及终端设备,其目的是为了解决现有的不同存储控制器接口中存储命令转换逻辑不兼容的问题。为了达到上述目的,本发明的实施例提供了一种可配置状态机的实现方法,包括:获取上行逻辑的第一硬件特征信息和下行逻辑的第二硬件特征信息;根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息;根据所述状态机的状态信息,所述输入事件信息和所述输出事件信息配置状态迁移矩阵,使所述状态机根据所述状态迁移矩阵中的对应关系迁移状态。其中,所述状态信息包括状态机的状态种类和每种状态的状态语义。其中,所述输入事件信息包括输入事件的种类和每种输入事件的语义;且所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述输入事件信息的步骤包括:确定所述输入事件的种类的编号;其中,所述编号为4位的第一数串,所述第一数串的第一位表示是否发生上行逻辑写操作事件,所述第一数串的第二位表示是否发生上行逻辑读操作事件,所述第一数串的第三位表示是否发生上行逻辑写数据到达事件,所述第一数串的第四位表示是否发生下行逻辑读数据到达事件;根据所述第一数串确定所述输入事件的语义。其中,所述输出事件信息包括输出事件的种类和每种输出事件的语义;所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述输出事件信息的步骤包括:确定所述输出事件的种类的编号;其中,所述编号为5位的第二数串,所述第二数串的第一位表示是否产生下行逻辑写操作事件,所述第二数串的第二位表示是否产生下行逻辑读操作事件,所述第二数串的第三位表示是否产生下行逻辑写数据到达事件,所述第二数串的第四位表示是否产生上行逻辑读数据到达事件,所述第二数串的第五位表示下一拍上行逻辑接口的准备信号的赋值;根据所述第二数串确定所述输出事件的语义。其中,所述根据所述状态机的状态信息,所述输入事件信息和所述输出事件信息配置状态迁移矩阵的步骤包括:获取所述状态机的当前状态语义和输入事件信息;根据所述当前状态语义和所述输入事件信息,配置出所述状态机的下一拍状态语义和输出事件信息;将配置结果添加到第一二元组到第二二元组的映射函数中,形成状态迁移矩阵。其中,在所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息的步骤之后,所述方法还包括:给所述状态机配置一用于使所述状态机支持输出事件延时输出的第一控制指令;或给所述状态机配置一用于使所述状态机不支持输出事件延时输出的第二控制指令。其中,在所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息的步骤之后,所述方法还包括:给所述状态机配置一用于使所述状态机支持延时写操作的第三控制指令;或给所述状态机配置一用于使所述状态机不支持延时写操作的第四控制指令。其中,在所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息的步骤之后,所述方法还包括:检测所述状态机的下行逻辑接口中是否存在多个写缓冲区;若存在,则维护一个写计数器,记录来自上行逻辑中尚未完成的写操作个数。其中,在所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息的步骤之后,所述方法还包括:检测所述状态机的下行逻辑接口中是否存在多个读缓冲区;若存在,则维护一个读计数器,记录来自上行逻辑中尚未完成的读操作个数。本发明的实施例还提供了一种可配置状态机,包括:获取模块,用于获取上行逻辑的第一硬件特征信息和下行逻辑的第二硬件特征信息;第一配置模块,用于根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息;第二配置模块,用于根据所述状态机的状态信息,所述输入事件信息和所述输出事件信息配置状态迁移矩阵,使所述状态机根据所述状态迁移矩阵中的对应关系迁移状态。本发明的实施例还提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例所述方法的步骤。本发明的上述方案有如下的有益效果:本发明的上述实施例所述的可配置状态机的实现方法、可配置状态机及终端设备来实现各种不同的存储控制器接口中存储命令转换逻辑的设计,以降低存储控制器接口逻辑设计的复杂度,提高存储控制器接口的灵活性和通用性。附图说明图1为本发明的可配置状态机的实现方法的流程示意图;图2为本发明的可配置状态机的实现方法的具体步骤示意图之一;图3为本发明的可配置状态机的实现方法的具体步骤示意图之二;图4为本发明的可配置状态机的结构示意图;图5为本发明的可配置状态机适用的终端设备的结构示意图;图6为本发明的可配置状态机的第一实例的状态迁移矩阵图;图7为本发明的可配置状态机的第二实例的状态迁移矩阵图;图8为本发明的可配置状态机的第三实例的状态迁移矩阵图。具体实施方式为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。本发明针对现有的不同存储控制器接口中存储命令转换逻辑不兼容的问题,提供了一种可配置状态机的实现方法、可配置状态机及终端设备。如图1所示,本发明的实施例提供了一种可配置状态机的实现方法,包括:步骤11,获取上行逻辑的第一硬件特征信息和下行逻辑的第二硬件特征信息;步骤12,根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息;步骤13,根据所述状态机的状态信息,所述输入事件信息和所述输出事件信息配置状态迁移矩阵,使所述状态机根据所述状态迁移矩阵中的对应关系迁移状态。本发明的上述实施例所述的可配置状态机的实现方法将发送到存储控制器接口的原子操作抽象为“不可中断的先读后写操作”,同时对该接口上行逻辑(即存储控制器接口与片上互连网络、交叉开关或仲裁器的连接的逻辑)接口和下行逻辑(即存储控制器接口与存储实体连接的逻辑)接口进行抽象;将存储控制器接口中的状态和状态迁移抽象为一个状态机,该状态机可以根据功能进行配置以实现灵活的存储控制器接口功能。其中,所述上行逻辑接口和所述下行逻辑接口均被抽象为一个八元组(wen,ren,addr,wdata_v,wdata,rdata_v,rdata,ready),对于上行逻辑u而言u.wen、u.ren、u.addr、u.wdata_v以及u.wdata是输出信号,u.rdata_v、u.rdata、u.ready是输入信号;而对下行逻辑d而言d.wen、d.ren、d.addr、d.wdata_v以及d.wdata是输入信号,d.rdata_v,d.rdata,d.ready是输出信号;下面对这八个元组做出详细的解释:wen:二值逻辑true(1)或false(0),表征写操作使能信号;ren:二值逻辑true(1)或false(0),表征读操作使能信号,如果wen和ren同时有效,表示发生一个先读后写的原子操作;addr:表征操作地址信号;wdata_v:二值逻辑true(1)或false(0),表征写数据有效信号;wdata:表征写数据信号;rdata_v:二值逻辑true(1)或false(0),表征读数据有效信号;rdata:表征读数据信号;ready:二值逻辑true(1)或false(0),表征操作预备信号,以上行逻辑为例,只有当ready信号为1时,上行逻辑才能向存储控制器接口发送读操作(ren=1)或写操作(wen=1)或者先读后写的原子操作。其中,所述状态信息包括状态机的状态种类和每种状态的状态语义。本发明的上述实施例中所述的存储控制器接口中最核心的是其状态机,一个状态机主要由状态、输入事件、输出事件以及状态迁移函数4部分组成,本发明所述的可配置状态机的状态最多有5种,并通过一个5位的状态配置掩码cfg0来配置每一种状态在状态机中是否有效;这5种状态分别为:0-idle:表示状态机处于空闲状态,由cfg0[0]来配置状态是否有效;1-wdata:表示状态机收到了一个写操作命令,正在等待写数据,由cfg0[1]来配置状态是否有效;2-rdata:表示状态机收到了一个读操作命令,正在等待读数据,由cfg0[2]来配置状态是否有效;3-lockrdata:表示状态机收到了一个先读后写的原子操作命令,写数据还未到达,正在等待读数据,由cfg0[3]来配置状态是否有效;4-lockrdataw:表示状态机收到了一个先读后写的原子操作命令,写数据已到达,正在等待读数据,由cfg0[4]来配置状态是否有效。如图2所示,所述输入事件信息包括输入事件的种类和每种输入事件的语义;且所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述输入事件信息的步骤包括:步骤21,确定所述输入事件的种类的编号;其中,所述编号为4位的第一数串,所述第一数串的第一位表示是否发生上行逻辑写操作事件,所述第一数串的第二位表示是否发生上行逻辑读操作事件,所述第一数串的第三位表示是否发生上行逻辑写数据到达事件,所述第一数串的第四位表示是否发生下行逻辑读数据到达事件;步骤22,根据所述第一数串确定所述输入事件的语义。本发明的上述实施例所述的输入事件信息最多包括16种,所述输入事件的编号采用一个4位的数m来表示,其中第0位m0表示是否发生上行逻辑写操作事件,第1位m1表示是否发生上行逻辑读操作事件,第2位m2表示是否发生上行逻辑写数据到达事件,第3位m3表示是否发生下行逻辑读数据到达事件。所有的输入事件都用字母“a”开始,后接一个10进制数或者一个“-”开始的4位二进制串m3m2m1m0来表示;比如a.1001号事件就是十进制的a9号事件,表示同时发生上行逻辑写操作事件和下行逻辑读数据到达事件。其中,所述输入事件有5种基本类型:1)a.0000(a0):空事件ε,表示没有任何事件到达,该事件无需配置,永远有效;2)a.0001(a1):uev_wr,表示上行逻辑写操作事件,具体表现为上行逻辑u中u.wen&&u.ready值为1;3)a.0010(a2):uev_rd,表示上行逻辑读操作事件,具体表现为上行逻辑u中u.ren&&u.ready值为1;4)a.0100(a4):uev_wrdata,表示上行逻辑写数据到达事件,具体表现为上行逻辑u中u.wdata_v值为1,该事件无效时表示写数据到达时间与上行逻辑写操作事件同拍,即u.wdata_v=u.wen&&u.ready;5)a.1000(a8):dev_rddata,表示下行逻辑读数据到达事件,具体表现为下行逻辑d中d.rdata_v值为1,该事件无效时表示下行逻辑读数据到达时间与下行逻辑读操作事件同拍,即d.rdata_v=d.wen&&d.ready。除了上述5种基本输入事件以外,通过将上述5种基本事件类型复合组合最多可能遇到16种事件:比如a.0011(a3),表示上行逻辑同时读写操作事件,具体表现为上行逻辑u中u.wen&&u.ren&&u.ready值为1,该事件无效时表示上行逻辑接口不支持同拍的读写原子操作;比如a.0111(a7),表示同时发生上行逻辑读写操作事件和上行逻辑写数据到达事件;比如a.1010(a10),表示同时发生上行逻辑读操作事件和下行逻辑读数据到达事件。除了上述16种输入事件以外,还有一种特殊的输入事件:即下行逻辑d中d.ready触发的事件,由于下行逻辑的准备信号为0的时候,上行逻辑不能发出任何操作,所以,我们把所有d.ready==0的情况全部归为a.0000(a0)事件,也就是空事件ε。本发明所述的可配置状态机包含一个16位的配置项cfg1来配置每一种输入事件是否有效,其中cfg1的第m位为1,表示输入事件中am号事件是有效的。比如,如果cfg1配置为0x000f(1111),这表示可配置状态机包含4种输入事件(a0,a1,a2,a3),即(a.000,a.0001,a.0010,a.0011),其它输入事件均无效;如果cfg1配置为0x00ff(11111111),这表示可配置状态机只包含7种输入事件(a0-a7),即(a.0000–a.0111)。其中,所述输出事件信息包括输出事件的种类和每种输出事件的语义;所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述输出事件信息的步骤包括:步骤23,确定所述输出事件的种类的编号;其中,所述编号为5位的第二数串,所述第二数串的第一位表示是否产生下行逻辑写操作事件,所述第二数串的第二位表示是否产生下行逻辑读操作事件,所述第二数串的第三位表示是否产生下行逻辑写数据到达事件,所述第二数串的第四位表示是否产生上行逻辑读数据到达事件,所述第二数串的第五位表示下一拍上行逻辑接口的准备信号的赋值;步骤24,根据所述第二数串确定所述输出事件的语义。本发明的上述实施例所述的可配置状态机中最多包括32种输出事件,输出事件的编号采用一个5位的数n来表示,其中第0位n0表示是否产生下行逻辑写操作事件,第1位n1表示是否产生下行逻辑读操作事件,第2位n2表示是否产生下行逻辑写数据到达事件,第3位n3表示是否产生上行逻辑读数据到达事件,第4位n4表示下一拍上行逻辑接口的ready信号的赋值。所有的输出事件都用字母“b”开始,后接一个10进制数或者一个“-”开始的5位二进制串n4n3n2n1n0来表示。比如b.01001号事件就是十进制的b9号事件,表示同时产生下行逻辑写操作事件和上行逻辑读数据到达事件,并在下一拍将上行逻辑接口的准备信号的置为0。其中,所述输出事件有6种基本类型:1)b.00000(b0):ε,表示没有任何事件到达,该事件无需配置,永远有效;2)b.00001(b1):dev_wr,表示下行逻辑写操作事件,具体表现为下行逻辑d中d.wen=1;3)b.00010(b2):dev_rd,表示下行逻辑读操作事件,具体表现为下行逻辑d中d.ren=1;4)b.00100(b4):dev_wrdata,表示下行逻辑写数据到达事件,具体表现为下行逻辑d中d.wdata_v=1,该事件无效时表示写数据到达时间与下行逻辑写操作事件同拍,即d.wdata_v=d.wen&&d.ready;5)b.01000(b8):uev_rddata,表示上行逻辑读数据到达事件,具体表现为上行逻辑u中u.rdata_v=1,该事件无效时表示上行逻辑读数据到达时间与下行逻辑读数据到达事件同拍,即u.rdata_v=d.rdata_v,u.rdata=d.rdata。6)b.10000(b16):uev_ready,它表示下一拍将上行逻辑接口的准备信号的置为1,如果没有该事件发生,上行逻辑接口的准备信号下一拍将被置为0。除了上述6种基本输出事件以外,通过将上述6种基本事件类型复合组合最多可能遇到32种事件:比如b.00011(b3),表示下行逻辑同时读写操作事件,具体表现为下行逻辑d中d.wen和d.ren同时置1,且上行逻辑接口的ready信号下一拍置为0,该事件无效时表示下行逻辑接口不支持同拍的读写原子操作;比如b.10101(b21),表示同时发生下行逻辑写操作事件和下行逻辑写数据到达事件,且上行逻辑接口的ready信号下一拍置为1;比如b.11001(b25),表示同时发生下行逻辑写操作事件和上行逻辑读数据到达事件,且上行逻辑接口的ready信号下一拍置为1。本发明的上述实施例中所述的可配置状态机中包含一个32位的配置项cfg2来配置每一种输出事件是否有效,其中cfg2的第n位为1,表示输出事件中bn号事件是有效的。比如,如果cfg2配置为0xffff0000(11111111111111110000000000000000),这表示可配置状态机只包含16种输出事件(b16-b31),这种配置隐含着说明上行逻辑接口的准备信号永远保持为1。如图3所示,所述根据所述状态机的状态信息,所述输入事件信息和所述输出事件信息配置状态迁移矩阵的步骤包括:步骤31,获取所述状态机的当前状态语义和输入事件信息;步骤32,根据所述当前状态语义和所述输入事件信息,配置出所述状态机的下一拍状态语义和输出事件信息;步骤33,将配置结果添加到第一二元组到第二二元组的映射函数中,形成状态迁移矩阵。本发明的上述实施例中所述的可配置状态机的状态迁移是(当前状态,输入事件)二元组到(下一拍状态,输出事件)二元组的映射函数,通过一个最大5×16项的状态迁移矩阵cfg3来配置和表示,函数形式为:cfg3:(当前状态,输入事件)->(下一拍状态,输出事件);比如,cfg3(0,a.0010)=(2,b.11010)表示的是当前状态为0-idle时,接收到a.0010事件(也就是上行逻辑发来的读操作事件)后,状态机下一拍状态将迁移到2-rdata,下一拍上行逻辑ready信号会被置1,允许接收其它操作,同拍还将产生uev_rddata和dev_rd的输出事件。其中,在所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息的步骤之后,所述方法还包括:给所述状态机配置一用于使所述状态机支持输出事件延时输出的第一控制指令;或给所述状态机配置一用于使所述状态机不支持输出事件延时输出的第二控制指令。本发明的上述实施例所述的可配置状态机还包括cfg4配置项,表征的是在可配置的状态机中输出事件是否延时输出,其默认值为0,表示除了uev_ready事件以外,其它输出事件都是同拍输出的,如果cfg4配置为n,则表示除了uev_ready事件以外,其它输出事件都是延时n拍输出的。cfg4典型的配置为0或者1。其中,在所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息的步骤之后,所述方法还包括:给所述状态机配置一用于使所述状态机支持延时写操作的第三控制指令;或给所述状态机配置一用于使所述状态机不支持延时写操作的第四控制指令。本发明的上述实施例所述的可配置状态机还包括cfg5配置项,表征的是在可配置的状态机中是否支持延时写操作,其默认值为1,表示支持延时写。该配置与输入事件的配置项cfg1和输出事件的配置项cfg2有关,例如,当基本输入事件a4在cfg1中被配置为有效,基本输出事件类型b4在cfg2中被配置为无效的时候,cfg5必须被配置为1,这是因为上行逻辑的写操作和写数据是分离的,但下行逻辑中写操作和写数据必须同拍,这就要求下行逻辑接口中,必须等到上行逻辑的写数据到达之后才能向下行逻辑发起写操作;其它情况下,cfg5可以配置为0,也可以配置为1。支持延时写还有一个作用,当上行逻辑支持同时读写且基本输入事件a4在cfg1中被配置为有效,但下行逻辑不支持同时读写且基本输入事件b4在cfg1中被配置为无效时,上行逻辑先发出一个写操作,但是写数据还未到达,当写数据到达时,同时上行逻辑还发生了一个读操作,此时下行逻辑此时只能产生一个读请求,而本应发生的写操作必须存进可配置的状态机中维护的一个(waddr_q,wdata_q)二元组寄存器,等待下行逻辑空闲后延后处理该写操作,此时所以与该地址相关的读操作会被旁路返回。其中,在所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息的步骤之后,所述方法还包括:检测所述状态机的下行逻辑接口中是否存在多个写缓冲区;若存在,则维护一个写计数器,记录来自上行逻辑中尚未完成的写操作个数。本发明的上述实施例所述的可配置状态机还包括cfg6配置项,表征的是下行逻辑接口中是否有多个写缓冲区,其默认值为1,表示下行逻辑接口中有多个写缓冲区。当cfg6配置为1时,可配置状态机中将维护一个写计数器wrcnt用于记录来自上行逻辑中尚未完成的写操作个数,记符号w=(wrcnt!=0),w的取值为0或1。wrcnt工作原理如下:1)当接收到的输入事件m中m0==1&&m2==0时,wrcnt加1;2)接收到的输入事件m中m0==0&&m2==1时,wrcnt减1;3)其它情况下wrcnt保持不变。其中,在所述根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息的步骤之后,所述方法还包括:检测所述状态机的下行逻辑接口中是否存在多个读缓冲区;若存在,则维护一个读计数器,记录来自上行逻辑中尚未完成的读操作个数。本发明的上述实施例所述的可配置状态机还包括cfg7配置项,表征的是下行逻辑接口中是否有多个读缓冲区,其默认值为1,表示下行逻辑接口中有多个读缓冲区。当cfg7配置为1时,可配置状态机中将维护一个读计数器rdcnt,用于记录来自上行逻辑中尚未完成的读操作个数,记符号r=(rdcnt!=0),r的取值为0或1。rdcnt工作原理如下:1)当接收到的输入事件m中m1==1&&m3==0时,rdcnt加1;2)接收到的输入事件m中m1==0&&m3==1时,rdcnt减1;3)其它情况下rdcnt保持不变。本发明的上述实施例所述的可配置状态机的实现方法对存储控制器接口逻辑进行抽象简化设计,并设计了一个可配置的状态机专用模块,可以通过不同配置用于支持绝大部分不同的基本原子操作和不同的存储实体,大大简化了存储控制器接口逻辑的设计复杂度,提高了存储控制器接口的灵活性和通用性,可以用于面向所有存储实体的存储接口控制器中上行逻辑和下行逻辑的存储命令转换。针对上述实施例所述的可配置状态机的实现方法可列举如下实例:a)存储实体是寄存器型寄存器可以同拍读出寄存器数据,单拍完成写操作,而且读写可以同时完成,针对这种类型的存储实体,下行逻辑d中的有效信号d.wen与d.wdata_v、d.ren与d.rdata_v都是同拍有效的。假设其上行逻辑u中u.wen与u.wdata_v、u.ren与u.rdata_v也是同拍有效的,也就是说当发生原子操作的时候,上行逻辑中的u.wdata无论是否与之前的u.rddata有关,u.wdata都可以同拍生成,因此上行逻辑中u.ready信号可以一直有效。这种情况下,存储控制器接口状态机的可配置项可以按如下方案来配置:cfg0=0x01,状态机只有一种状态:0-idle;cfg1=0x000f,输入事件有4种类型:a.0000(a0)-a.0011(a3),该状态机中基本输入事件uev_wrdata和dev_rddata被配置为无效,也就是说输入事件m中m2和m3永远为0;cfg2=0x000f_0000,输出事件有4种:b.10000(b16)–b.10011(b19),该状态机中基本输出事件dev_wrdata和uev_rddata被配置为无效,也就是说输出事件n中n2和n3永远为0,同时,上行逻辑中u.ready信号一直为1;状态迁移矩阵cfg3配置和状态迁移图表如图6和表1所示,需要说明的是在状态迁移图中结点表示状态,边的方向表示状态的迁移方向,有向边上的注释中冒号以前表示接收到的输入事件m,冒号以后表示的是产生的输出事件编号n,如果有多种“输入事件:输出事件”组合能够到达相同的目标状态时,用逗号“,”隔开。如不做特殊说明,以下皆同;其它配置选项cfg4=0,cfg5=0,cfg6=0,cfg7=0。按照上述配置,状态机一开始处于0-idle态:当接收到输入事件a0时,产生输出事件b16,下一拍保持0-idle态;当接收到输入事件a1时,产生输出事件b17,下一拍保持0-idle态;当接收到输入事件a2时,产生输出事件b18,下一拍保持0-idle态;当接收到输入事件a3时,产生输出事件b19,下一拍保持0-idle态。输入事件\状态0a00,b16a10,b17a20,b18a30,b19表1b)存储实体是单端口sram型单端口sram可以在下一拍读出sram数据,写操作可单拍完成,而且读写可以不能同时进行,针对这种类型的存储实体,下行逻辑d中的有效信号d.wen与d.wdata_v是同拍有效的,d.wen与d.ren不能同时有效,d.rdata_v在d.ren的下一拍变为有效。假设其上行逻辑接口只支持swap原子操作,则上行逻辑u中u.wen和u.wdata_v是同拍有效的,u.rdata_v与d.rdata_v是同拍有效的,那么发生原子操作的时候,上行逻辑u中u.ready信号必须置0,直到u.rdata_v有效为止,这样可以保证原子操作的原子性不被打破,同时保证单端口sram不会发生资源相关。这种情况下,存储控制器接口状态机可以按如下方案来配置:cfg0=0x15,状态机只有以下3种状态:0-idle,2-rdata,4-lockrdataw;cfg1=0x0f0f,输入事件有8种:a.0000(a0)-a.0011(a3),a.1000(a8)-a.1011(a11),该状态机中基本输入事件uev_wrdata被配置为无效,也就是说输入事件m中m2永远为0;cfg2=0x0007_0004,输出事件有4种:b.00010(b2),b.10000(b16)–b.10010(b18),该状态机中基本输出事件dev_wrdata和uev_rddata被配置为无效,也就是说输出事件n中n2和n3永远为0,u.rdata_v=d.rdata_v,u.rdata=d.rdata;状态迁移矩阵cfg3配置和状态迁移图表如图7和表2所示。其它配置选项cfg4=0,cfg5=0,cfg6=0,cfg7=0。按照上述配置,状态机一开始处于0-idle态:1)状态机处于0-idle态时,当接收到输入事件a0,产生输出事件b16,下一拍进入0-idle态;当接收到输入事件a1,产生输出事件b17,下一拍进入0-idle态;当接收到输入事件a2,产生输出事件b18,下一拍进入2-rdata态;当接收到输入事件a3,产生输出事件b2,下一拍进入4-lockrdataw态。该状态下其它任何事件均为非法事件。2)状态机处于2-rdata态时,当接收到输入事件a8,产生输出事件b16,下一拍进入0-idle态;当接收到输入事件a9,产生输出事件b17,下一拍进入0-idle态;当接收到输入事件a10,产生输出事件b18,下一拍进入2-rdata态;当接收到输入事件a11,产生输出事件b2,下一拍进入4-lockrdataw态。该状态下其它任何事件均为非法事件。3)状态机处于4-lockrdataw态时,当接收到输入事件a8时,产生输出事件b17,下一拍进入0-idle态。该状态下其它任何事件均非法。输入事件\状态024a00,b16--a10,b17--a22,b18--a34,b2--a8-0,b240,b25a9-0,b25-a10-2,b26-a11-4,b10表2c)存储实体是片外内存型片外内存读操作发出后需要多拍才能返回读数据,写操作和写数据也是分离发出的,但是读写不能同时发生。针对这种类型的存储实体,下行逻辑d中的有效信号d.wen与d.ren不能同时有效,d.wdata_v在d.wen有效后的若干拍后才变为有效,且mrdata_v也是在mren有效后的若干拍后才变为有效。假设其上行逻辑接口支持所有的基本原子操作,则上行逻辑u中u.wen和u.wdata_v不是同拍有效的,u.wdata_v比u.wen晚若干拍,u.rdata_v与d.rdata_v信号同拍有效,那么发生原子操作的时候,u.ready信号必须置0,直到u.rdata_v有效为止,这样可以保证原子操作的原子性不被打破,如果u.wdata与之前的u.rddata有关(如cas、loadinc以及loaddec等原子操作),则u.wdata_v会晚于u.rdata_v发生,如果上行逻辑接口中的u.wdata与之前的u.rddata无关(如swap原子操作),则u.wdata_v会早于u.rdata_v发生。另外,假设片外内存的控制器中只有一个写命令缓冲区,但有多个读命令缓冲区,当下行逻辑的读缓冲区没有空闲项存储读请求时,d.ready会置0,此时上行逻辑不会向存储控制器接口发送读请求或先读后写请求,而且当上行逻辑接口发出了写操作但是写数据还没有到达时,u.ready信号必须置0。这种情况下,存储控制器接口状态机的可配置项可以按如下方案来配置:cfg0=0x1f,状态机包含以下5种状态:0-idle,1-wdata,2-rdata,3-lockrdata,4-lockrdataw;cfg1=0xffff,输入事件有16种:a.0000(a0)-a.1111(a15);cfg2=0x0077_0077,输出事件有10种:b.00000(b0)–b.00010(b2),b.00101(b5),b.00110(b6),b.10000(b16),b.10010(b18),b.10100(b20)–b.10110(b22),该状态机中基本输出事件uev_rddata被配置为无效,也就是说输出事件n中n3永远为0,u.rdata_v=d.rdata_v,u.rdata=d.rdata;;状态迁移矩阵cfg3配置和状态迁移图表如图8和表3所示。其它配置选项cfg4=0,cfg5=1,cfg6=0,cfg7=1。按照上述配置,1)状态机处于0-idle态时,当接收到输入事件a0时,产生输出事件b16,下一拍进入0-idle态;当接收到输入事件a1时,产生输出事件b1,下一拍进入1-wdata态;当接收到输入事件a2时,产生输出事件b18,下一拍进入2-rdata态;当接收到输入事件a3时,产生输出事件b2,下一拍进入3-lockrdata态。该状态下其它任何事件均为非法事件。2)状态机处于1-wdata态时,当接收到输入事件a0时,产生输出事件b0,下一拍进入1-wdata态;当接收到输入事件a4时,产生输出事件b20,如果r==0(即,rdcnt==0),下一拍进入0-idle态,否则如果r==1(即,rdcnt!=0),下一拍2-rdata态;当接收到输入事件a5时,产生输出事件b5,下一拍进入1-wdata态;当接收到输入事件a6时,产生输出事件b22,下一拍进入2-rdata态;当接收到输入事件a7时,产生输出事件b6,下一拍进入3-lockrdata态;当接收到输入事件a8时,产生输出事件b0,下一拍进入1-wdata态;当接收到输入事件a12时,产生输出事件b20,如果r==0(即,rdcnt==0),下一拍进入0-idle态,否则如果r==1(即,rdcnt!=0),下一拍2-rdata态;当接收到输入事件a13时,产生输出事件b5,下一拍进入1-wdata态;当接收到输入事件a14时,产生输出事件b22,下一拍进入2-rdata态;当接收到输入事件a15时,产生输出事件b6,下一拍进入3-lockrdata态;该状态下其它任何事件均为非法事件。3)状态机处于2-rdata态时,当接收到输入事件a0时,产生输出事件b16,下一拍进入2-rdata态;当接收到输入事件a1时,产生输出事件b1,下一拍1-wdata态;当接收到输入事件a2时,产生输出事件b18,下一拍进入2-rdata态;当接收到输入事件a3时,产生输出事件b2,下一拍进入3-lockrdata态;当接收到输入事件a8时,产生输出事件b16,如果r==0(即,rdcnt==0),下一拍进入0-idle态,否则如果r==1(即,rdcnt!=0),下一拍2-rdata态;当接收到输入事件a9时,产生输出事件b1,下一拍进入1-wdata态;当接收到输入事件a10时,产生输出事件b18,下一拍进入2-rdata态;当接收到输入事件a11时,产生输出事件b2,下一拍进入3-lockrdata态;该状态下其它任何事件均为非法事件。4)状态机处于3-lockrdata态时,当接收到输入事件a0时,产生输出事件b0,下一拍进入3-lockrdata态;当接收到输入事件a4时,产生输出事件b5,下一拍进入4-lockrdataw态;当接收到输入事件a8时,产生输出事件b0,下一拍进入1-wdata态;当接收到输入事件a12时,产生输出事件b21,下一拍进入0-idle态。该状态下其它任何事件均为非法事件。5)状态机处于4-lockrdataw态时,当接收到输入事件a0时,产生输出事件b0,下一拍进入4-lockrdataw态;当接收到输入事件a8时,产生输出事件b1,下一拍进入0-idle态。该状态下其它任何事件均为非法事件。事件\状态01234a00,b161,b02,b163,b04,b0a11,b1-1,b1--a22,b18-2,b18--a33,b2-3,b2--a4-r*2,b20-4,b5-a5-1,b5---a6-2,b22---a7-3,b6---a8-1,b0r*2,b161,b00,b0a9--1,b1--a10--2,b18--a11--3,b2--a12-r*2,b20-0,b21-a13-1,b5---a142,b22---a15-3,b6---表3如图4所示,本发明的实施例还提供了一种可配置状态机,包括:获取模块,用于获取上行逻辑的第一硬件特征信息和下行逻辑的第二硬件特征信息;第一配置模块,用于根据所述第一硬件特征信息和所述第二硬件特征信息配置所述状态机的状态信息,输入事件信息和输出事件信息;第二配置模块,用于根据所述状态机的状态信息,所述输入事件信息和所述输出事件信息配置状态迁移矩阵,使所述状态机根据所述状态迁移矩阵中的对应关系迁移状态。其中,所述第一配置模块包括:第一确定模块,用于确定所述输入事件的种类的编号;其中,所述编号为4位的第一数串,所述第一数串的第一位表示是否发生上行逻辑写操作事件,所述第一数串的第二位表示是否发生上行逻辑读操作事件,所述第一数串的第三位表示是否发生上行逻辑写数据到达事件,所述第一数串的第四位表示是否发生下行逻辑读数据到达事件;第二确定模块,用于根据所述第一数串确定所述输入事件的语义。其中,所述第一配置模块包括:第三确定模块,用于确定所述输出事件的种类的编号;其中,所述编号为5位的第二数串,所述第二数串的第一位表示是否产生下行逻辑写操作事件,所述第二数串的第二位表示是否产生下行逻辑读操作事件,所述第二数串的第三位表示是否产生下行逻辑写数据到达事件,所述第二数串的第四位表示是否产生上行逻辑读数据到达事件,所述第二数串的第五位表示下一拍上行逻辑接口的准备信号的赋值;第四确定模块,用于根据所述第二数串确定所述输出事件的语义。其中,第二配置模块包括:第一获取子模块,用于获取所述状态机的当前状态语义和输入事件信息;第一配置子模块,用于根据所述当前状态语义和所述输入事件信息,配置出所述状态机的下一拍状态语义和输出事件信息;第二配置子模块,用于将配置结果添加到第一二元组到第二二元组的映射函数中,形成状态迁移矩阵。其中,所述可配置状态机还包括:第三配置模块,用于给所述状态机配置一用于使所述状态机支持输出事件延时输出的第一控制指令;或用于给所述状态机配置一用于使所述状态机不支持输出事件延时输出的第二控制指令。其中,所述可配置状态机还包括:第四配置模块,用于给所述状态机配置一用于使所述状态机支持延时写操作的第三控制指令;或用于给所述状态机配置一用于使所述状态机不支持延时写操作的第四控制指令。其中,所述可配置状态机还包括:第五配置模块,用于检测所述状态机的下行逻辑接口中是否存在多个写缓冲区;若存在,则维护一个写计数器,记录来自上行逻辑中尚未完成的写操作个数。其中,所述可配置状态机还包括:第六配置模块,用于检测所述状态机的下行逻辑接口中是否存在多个读缓冲区;若存在,则维护一个读计数器,记录来自上行逻辑中尚未完成的读操作个数。本发明的上述实施例所述的可配置状态机对存储控制器接口逻辑进行抽象简化设计,并设计了一个可配置的状态机专用模块,可以通过不同配置用于支持绝大部分不同的基本原子操作和不同的存储实体,大大简化了存储控制器接口逻辑的设计复杂度,提高了存储控制器接口的灵活性和通用性,可以用于面向所有存储实体的存储接口控制器中上行逻辑和下行逻辑的存储命令转换。本发明的实施例还提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例所述方法的步骤。如图5所示,本发明的实施例中所述的终端设备设置在存储控制器接口部分,第一端与上行逻辑相匹配连接,第二端与下行逻辑及存储实体相匹配连接,且所述上行逻辑与多个处理器相连接。以上所述是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1