法律状态公告日
法律状态信息
法律状态
2019-11-22
专利权的转移 IPC(主分类):G06F5/06 登记生效日:20191104 变更前: 变更后: 申请日:20111230
专利申请权、专利权的转移
2018-08-28
授权
授权
2018-06-08
专利申请权的转移 IPC(主分类):G06F5/06 登记生效日:20180522 变更前: 变更后: 申请日:20111230
专利申请权、专利权的转移
2014-12-31
实质审查的生效 IPC(主分类):G06F5/06 申请日:20111230
实质审查的生效
2013-07-03
公开
公开
技术领域
本发明涉及数据存储技术,尤其涉及一种硬件抽象数据结构(HardwareAbstract Data Structure,HADS)、数据处理方法及系统。
背景技术
用处理器处理一个具体任务时,需要将具体任务抽象成适当的数据结构,基本的类型包括集合、线性结构、树形结构、图状结构等,这些结构的实现大都是通过软件实现的,效率低、实现复杂、能耗比较大。下面以堆栈(STACK)为例说明软件如何实现特定的数据结构。
STACK是限定仅在栈顶(TOP)和栈底(BASE)进行插入或删除操作的线性表。实现软件STACK的过程是先根据栈的最大使用量申请存储空间,设置STACK栈底指针和栈顶指针,初始化时STACK为NULL,栈顶指针指向栈底,即TOP=BASE,然后,通过压入(PUSH)指令将数据压入STACK,每执行一次PUSH操作,TOP加1;通过弹出(POP)指令弹出STACK保存的数据,每执行一次POP操作,TOP减1。这里的TOP和BASE指针都是保存在寄存器或存储器内的,加1或减1操作也需要通过指令来完成。软件STACK的实现原理如图1所示,可以看出,对STACK的每次操作至少需要两条指令,如果需要实现STACK的防覆盖等功能,每次操作将需要更多的指令,从而STACK的处理效率较低。
虽然目前出现了硬件实现的数据结构,但是也只能实现结构较简单的数据结构,如先入先出队列(FIFO)、STACK、堆(HEAP)、队列(QUEUE)等集合或线性结构,但由于现有硬件实现的数据结构通常是采用固定硬件实现的,从而可配置性不强、不灵活、浪费系统资源。硬件实现的FIFO结构如图2所示,可以看出,硬件FIFO由读地址生成(Read Address Generate)、写地址生成(Write Address Generate)、双端口SRAM(Double Port RAM)、FIFO的空满状态(Full and Empty Flag)组成,同时还需要考虑输入输出接口的兼容性问题。虽然硬件实现的FIFO效率相当高,设置不需要配置就可以直接使用,但是实现的FIFO大小、接口等都是固定不变的,另外,当处理器不用FIFO的时候,这部分资源白白浪费了,不可能将这种硬件FIFO用作HEAP或其它结构。如果采用硬件实现TREE结构,除了不能重用外,设计也较复杂。
发明内容
有鉴于此,本发明的主要目的在于提供一种硬件抽象数据结构、数据处理方法及系统,能够实现可动态配置、灵活多变、高效率、接口通用、互联特性好的硬件抽象数据结构,提高数据处理效率。
为达到上述目的,本发明的技术方案是这样实现的:
一种硬件抽象数据结构,该硬件抽象数据结构HADS包括:通用接口GI、控制和配置逻辑CCL和存储库MP;其中,
所述GI,用于实现HADS与处理器之间的交互;
所述CCL,用于根据GI接收的配置命令对MP进行硬件数据结构配置;
所述MP,用于存储数据。
该HADS还包括一致性接口CI,
所述CI,用于多核之间的互联以及直接数据访问。
该HADS还包括智慧逻辑IL,
所述CCL,还用于根据GI接收的命令控制数据在MP到接口之间的传输、数据在IL内的处理、以及数据的旁路;
所述IL,用于根据CCL的控制,对MP中存储的数据进行处理。
所述IL,还用于根据CCL的控制输出处理后的数据,或将处理后的数据写回MP。
一种数据处理方法,包括:
处理器对HADS进行配置,将HADS内的存储块配置成需要的硬件数据结构,之后采用所述配置的存储块进行数据存储。
所述处理器对HADS进行配置,将HADS内的存储块配置成需要的硬件数据结构为:
处理器通过GI将配置命令发送给CCL,所述配置命令至少携带需要配置的硬件数据结构信息;
所述CCL根据所述配置命令对MP进行硬件数据结构配置,将MP中的存储块配置成需要的硬件数据结构。
该方法还包括:
处理器通过CI或GI直接访问MP内的数据;
所述CCL控制数据在MP与接口之间的传输、数据在IL内的处理、以及数据在CI与GI间的旁路。
该方法还包括:
所述CCL控制IL输出处理后的数据,或将处理后的数据写回MP。
所述处理器为本地处理器和/或远端处理器。
一种数据处理系统,包括处理器和权利要求1至4任一项所述的HADS。
所述处理器为本地处理器和/或远端处理器。
本发明硬件抽象数据结构、数据处理方法及系统中的硬件抽象数据结构(HADS)包括:通用接口(GI)、控制和配置逻辑(CCL)和存储库(MP);其中,所述GI,用于实现HADS与处理器之间的互联;所述CCL,用于根据GI接收的配置命令对MP进行硬件数据结构配置;所述MP,用于存储数据。本发明实现了完全可动态配置、灵活多变、高效率、接口通用、互联特性好的硬件抽象数据结构,采用所述硬件抽象数据结构来实现Cache、TCM、CAM等存储结构,以及实现FIFO、BUFFER、HEAP、STACK、QUEUE、LINK、TABLE等线性结构,以及实现TREE型结构以及实现图等其它结构,可以使这些结构的实现更加高效、灵活;同时,本发明具有对数据的智慧处理和转换功能,尽量将数据的处理靠近存储器、减少对总线的依赖,从而能够减轻处理器的负担,提高性能、降低功耗、节省成本。
附图说明
图1为现有软件STACK的实现原理示意图;
图2为现有硬件实现的FIFO结构示意图;
图3为本发明硬件抽象数据结构的示意图;
图4为HADS可实现的数据结构示意图;
图5为本发明实施例1中HADS实现FIFO的示意图;
图6为本发明实施例2中HADS实现TCM的示意图;
图7为本发明实施例3中HADS实现STACK的示意图;
图8为本发明实施例4中HADS实现Cache的示意图;
图9为本发明实施例5中HADS实现查找表的示意图;
图10为本发明实施例6中HADS实现TREE的示意图;
图11为HADS内对数据处理的实例示意图;
图12为HADS在系统中可能的使用情况示意图;
图13为HADS与其他存储器共用的实例示意图。
具体实施方式
本发明的基本思想是:硬件抽象数据结构(HADS)包括:通用接口(GI)、控制和配置逻辑(CCL)和存储库(MP);其中,所述GI,用于实现HADS与处理器之间的交互;所述CCL,用于根据GI接收的配置命令对MP进行硬件数据结构配置;所述MP,用于存储数据。
图3为本发明硬件抽象数据结构的示意图,如图3所示,该硬件抽象数据结构包括:通用接口(General Interface,GI)、控制和配置逻辑(Control andConfigure Logic,CCL)和存储库(Memory Pool,MP),其中,
所述GI,与处理器实现互联,用于实现HADS与处理器之间的交互;
所述CCL,用于根据GI接收的配置命令对MP进行硬件数据结构配置;具体的,可以将MP内的存储阵列(Memory Array,MA)动态配置成需要的硬件数据结构,如Cache、TCM、CAM、FIFO、BUFFER、HEAP、STACK、QUEUE、TABLE、LINK、TREE、GRAPHIC等结构。
所述MP,用于存储数据。这里所述的数据是一个广义的概念,除了具体的数据,还可以包括索引、指针等。MP一般由大量的存储块(可以以阵列表示,但不限于阵列)组成,一定大小的存储器可以配置成n块存储阵列(MemoryArray,MA),每个存储阵列的作用完全可配置,可能存储的是索引,也可能是指针或数据。本发明将MP以外的部分称为硬件抽象的数据结构智慧控制和互联(HADS_ICI)。
该HADS还包括一致性接口(Coherence Interface,CI),用于多核之间的互联以及直接数据访问。
该HADS还包括智慧逻辑(Intelligence Logic,IL),
所述CCL,还用于根据GI接收的命令控制数据在MP到接口之间的传输、数据在IL内的处理、以及数据的旁路;
所述IL,用于根据CCL的控制,对MP中存储的数据进行处理。
所述IL,还用于根据CCL的控制输出处理后的数据,或将处理后的数据写回MP。
HADS还可以包括一致性接口(Coherence Interface,CI):用于多核之间的互联,也可用于直接数据访问(如DMA);
需要说明的是,基于HADS,可以根据软件的需求,将整个MP配置成不同的数据结构,图4为HADS可实现的数据结构示意图,如图4所示,系统可以将MP配置成不同的数据结构,即使这种数据结构正在使用也可以动态的改变其属性,另外,所有这些数据结构输入或输出的数据或索引等都可以通过IL进行处理,不是所有访问都必须返回数值给处理器,数据甚至可以在不同的数据结构之间进行流动,以达到节省总线带宽,减轻处理器负担的目的,处理器仅负责复杂的运算和控制,从而提高处理性能。
本发明还相应地提出一种数据处理方法,该方法包括:
处理器对HADS进行配置,将HADS内的存储块配置成需要的硬件数据结构,之后采用所述配置的存储块进行数据存储。
所述处理器对HADS进行配置,将HADS内的存储块配置成需要的硬件数据结构为:
处理器通过GI将配置命令发送给CCL,所述配置命令至少携带需要配置的硬件数据结构信息;
所述CCL根据所述配置命令对MP进行硬件数据结构配置,将MP中的存储块配置成需要的硬件数据结构。
该方法还包括:
处理器通过CI或GI直接访问MP内的数据;
所述CCL控制数据在MP到接口之间的传输、数据在IL内的处理、以及数据在CI和GI间的直通旁路。
该方法还包括:
所述CCL控制IL输出处理后的数据,或将处理后的数据写回MP。
所述处理器为本地处理器和/或远端处理器。
本发明还相应地提出一种数据处理系统,该系统包括处理器和上述的HADS。
所述处理器为本地处理器和/或远端处理器,多个处理器间可以共享同一种或多种数据结构。
下面结合具体实施例对本发明的技术方案作进一步详细说明。
实施例1
图5为本发明实施例1中HADS实现FIFO的示意图,如图5所示,本实施例中,根据一条简单的在MP内配置一个FIFO的命令(①),HADS在CCL的控制(②)下将生成一个硬件FIFO,这个硬件FIFO的特性,包括大小、数据输入输出的方向(来自GI或CI,也可以指定从CI或GI输出)、以及可以使能旁路、是否支持数据覆盖,甚至可以根据FIFO的状态产生中断,在使用过程中也可以使用命令适当改变FIFO的属性。在IL的支持下,可以对数据的输入(③)和输出(④)作运算或变换等操作,FIFO的数据输入既可以来自处理器,也可以是HADS内其它结构输出的数据;同样输出可以直接返回给处理器,也可以送到其它的数据结构。
实施例2
图6为本发明实施例2中HADS实现TCM的示意图,可以看出,通过配置,HADS可以简单地当作TCM来使用,该TCM甚至可以在一个时钟周期返回处理器或其它数据结构需要的数据,节省对存储器的访问延迟,提高处理器性能。
实施例3
图7为本发明实施例3中HADS实现STACK的示意图,图7所示的STACK完全可以达到图1所示STACK的灵活程度,当软件觉得大小不够使用时,随时可以通过指令动态配置,与图1不同的是,这种方法实现的STACK读写地址的生成完全由IL来做,不需要专门的地址生成逻辑。
实施例4
图8为本发明实施例4中HADS实现Cache的示意图,Cache的实现至少需要两块存储阵列,分别作为TAG和DATA使用。通过IL和CCL,可以实现虚实地址转换,甚至可以使用一块存储阵列来实现TLB的功能。通过一致性接口,可以进行多核的互联以及实现cache的一致性功能。
实施例5
本实施例以查找表为例说明TABLE的实现,图9为本发明实施例5中HADS实现查找表的示意图,具体的,可以使用一个存储阵列来实现查找表,也可以使用多个存储阵列。图9中④表示索引,可以直接查表得到数据⑥,实现一级查找表的功能,也可能查表得到的是下一个索引⑤,实现多级链表。
实施例6
图10为本发明实施例6中HADS实现TREE的示意图,其中,④表示树的根(root)指针,⑤表示由root指针得到的两个分支指针,其中一个指针取到了数据⑥,到达了树的叶(leaf),该分支结束;另一个分支指针取到的还是指针⑦,将继续追踪(trace),直到所追踪的树叶,取得需要的数据⑧。根据软件的需要,HADS可以实现复杂的树形结构,而不限于图10的示例。
需要说明的是,从图5到图10仅是列举了HADS可以实现的几种数据结构,在CCL和IL的控制下,HADS可以实现所有可以想到的数据结构,数据可以在这些数据结构之间流动,IL可以对这些数据进行处理。举例来说,两个核之间通过FIFO进行通信,如果两个核的大小端是动态可配置的,在它们之间传输的数据也必须根据两个核配置的变化进行大小端的匹配,如果两个核的大小端是一致的,则数据直接传输到CI接口;如果大小端不一致,则需要将数据按字节扭一下,通过IL很容易实现这个功能,HADS内对数据处理的实例如图11所示。
需要说明的是,对于矩阵变换或位操作(如位提取或插入)等数据量大的操作,使用HADS更方便,可以在HADS内定义一个BUFFER,将处理的中间结果先存入BUFFER内,待数据处理完后再返回给处理器。
HADS在系统中可能的使用情况如图12所示,可以看出,HADS的使用非常灵活,可以作为单核的内部存储器,也可以作为多核的共享存储器;还可以每个核拥有一个或多个HADS,核间通过一致性接口保证多核的HADS内数据的一致性;当然,也可以作为外部存储器使用。
另外,多个HADS能相互连接组合成较大的HADS;HADS与其它类型的存储器也是可以共存的,且HADS与其它存储器间可以相互通信。也就是说,HADS可以适用于任何处理器架构,可以使用作为处理器的唯一存储器,也可以与其它存储器一起使用,HADS与其他存储器共用的实例如图13所示。
总的来说,与现有技术相比,HADS具有如下特点:
1)动态可配置,灵活多变,Memory作为何种数据结构使用完全由软件决定;
2)效率高,完全可以达到固定硬件实现的效率;
3)Memory内多种数据结构可以并存,数据可以在各种数据结构之间流动,减少了数据总线的流量,有利于性能的提升和功耗的降低;
4)可以对各种数据结构的输入输出数据进行处理,减轻了处理器的负担,可以提高处理器的性能;
5)使用灵活,可以适用于任何处理器架构。
采用本发明所述的HADS,与现有技术相比,取得了软件实现数据结构的灵活,达到了硬件实现数据结构的高效,HADS可以在任何处理器架构下使用,完全动态可配置,智慧逻辑具有数据处理和转换能力,降低了总线访问的频率,有利于性能的提高和功耗的降低。在HADS内,多种数据结构可以并存,数据可以在各种数据结构之间流动,智慧逻辑可以对流动的数据进行处理,减轻总线和处理器的负担,从而达到提升性能和降低功耗的目的。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
机译: 硬件抽象数据结构,数据处理方法和系统
机译: 硬件抽象数据结构,数据处理方法及系统
机译: 硬件抽象数据结构,数据处理方法和系统