数据处理设备和数据处理装置的制作方法

文档序号:6372142阅读:86来源:国知局
专利名称:数据处理设备和数据处理装置的制作方法
技术领域
实施例总体上涉及数据处理设备和数据处理装置。
背景技术
在数据处理系统中,通常需要在不同部件(例如不同处理器)之间(例如在中央处理单元CPU和协处理器之间)交换数据,或者也在运行在同一处理器上的不同过程之间交换数据。可以借助于将待交換的数据写入到存储器而在不同实体(其可以包括由处理器或硬件部件(例如协处理器)执行的软件过程)之间交换数据,所述存储器可以由所有实体访问(即共享存储器)。 在这种情况下,通常必须提供用于确保对于数据的同步访问并且避免数据毁坏的机制,例如如果ー个实体在另ー实体完成其对共享存储器的访问之前访问共享存储器就可能出现数据毁坏。因此,提供高效访问(例如允许借助于存储器进行快速数据交換)的、用于控制对存储器(例如用于数据交換的共享存储器)的访问的机制是所希望的。

发明内容
根据本发明的ー个方面,提供ー种数据处理设备。所述数据处理设备包括包括多个存储器区域的存储器;第一数据处理部件;控制存储器,其对于所述多个存储器区域中的每个存储器区域包括表明是否可以由第一数据处理部件执行对该存储器区域的数据访问的指示;以及第二数据处理部件;其中,第一数据处理部件包括检查电路,其被配置成基于对应于存储器区域的所述指示对于该存储器区域检查是否可以由第一数据处理部件执行对该存储器区域的数据访问;数据访问电路,其被配置成在可以由第一数据处理部件执行对所述多个存储器区域中的一个存储器区域的数据访问的情况下执行对该存储器区域的数据访问;以及设置电路,其被配置成响应于第一数据处理部件对存储器区域的数据访问的完成而设置对应于该存储器区域的所述指示以表明不可以由第一数据处理部件执行对该存储器区域的数据访问;以及其中,第二数据处理部件被配置成设置对应于存储器区域的所述指示以表明第一数据处理部件可以执行对该存储器区域的数据访问。根据本发明的另一方面,提供一种数据处理设备的数据处理部件。所述数据处理部件包括控制存储器,其对于多个存储器区域中的每个存储器区域包括表明是否可以由第一数据处理部件执行对该存储器区域的数据访问的指示;检查电路,其被配置成基于对应于存储器区域的所述指示对于该存储器区域检查是否可以由第一数据处理部件执行对该存储器区域的数据访问;数据访问电路,其被配置成在可以由第一数据处理部件执行对所述多个存储器区域中的一个存储器区域的数据访问的情况下执行对该存储器区域的数据访问;设置电路,其被配置成响应于第一数据处理部件对存储器区域的数据访问的完成而设置对应于该存储器区域的所述指示以表明不可以由第一数据处理部件执行对该存储器区域的数据访问。根据本发明的又一方面,提供ー种数据处理装置。所述数据处理装置包括包括多个数据对象的第一存储器;包括多个数据存储单元的第二存储器,其中数据存储単元的数目少于数据对象的数目;数据处理电路,其被配置成针对关于所述多个数据对象的状态信息访问所述多个数据存储単元;选择电路,其被配置成根据预定规则从所述多个数据对象中选择数据对象;存储电路,其被配置成把关于所选数据对象的状态信息存储在所述多个数据存储单元的数据存储单元中。


在附图中,相同的附图标记通常在不同视图中始終指代相同的部件。附图不一定是按比例的,而是通常将重点放在说明本发明的原理上。在下面的描述中,參照下面的附图描述各种实施例,其中
图I示出根据ー个实施例的数据处理装置。图2示出根据ー个实施例的数据处理设备。图3示出根据ー个实施例的数据处理设备。图4示出根据ー个实施例的流程图。图5示出根据ー个实施例的存储器。图6示出数据处理装置。图7示出根据ー个实施例的状态信息的映射。
具体实施例方式下面的详细描述參照了附图,所述附图通过说明的方式示出其中可以实践本发明的具体细节和实施例。这些实施例以足够的细节被描述以使本领域技术人员能够实践本发明。在不背离本发明的范围的情况下,可以利用其他实施例并且可以做出结构的、逻辑的和电的改变。各种实施例不一定是互相排斥的,因为ー些实施例可以与ー个或多个其他实施例相组合以形成新的实施例。在数据处理系统中,可能需要把由一个实体(即数据产生实体,例如硬件部件或者运行在处理器上的过程)生成的数据供应给另ー实体(即数据消费实体,例如另ー硬件部件或者运行在处理器上的过程,所述处理器可能是运行数据生成实体的同一处理器)。应当注意,所述另ー实体(即数据消费实体)可以对于第三通信伙伴(即第三实体)或者也对于所述数据产生实体还操作为数据产生实体,从而全部两个实体都操作为数据产生实体和数据消费实体。这在图I中被示出。图I示出根据ー个实施例的数据处理设备100。数据处理设备100包括数据产生实体101 (也被称作生产者)和数据消费实体102(也被称作消费者)。举例来说,数据产生实体101生成将由数据消费实体102处理的数据103。全部两个实体可以是运行在(例如一个或两个计算机系统的)同一处理器或不同处理器上的过程,或者可以是不同的硬件部件(例如处理器和协处理器等等)。可以借助于共享存储器104在数据产生实体101与数据消费实体102之间交换数据103。数据产生实体101将数据103写入到共享存储器104中,并且数据消费实体102从共享存储器104读取数据103。数据103例如可以是例如由数据产生实体101连续地产生(例如生成)并且由数据消费实体102消费的数据流的一部分(如图I中的数据103左侧和右侧的三个点所示)。共享存储器104可以被视为实施数据产生实体101与数据消费实体102之间的通道 108。共享存储器104例如包括存储器104的多个存储器区域105、106、107,其在下面也被称作缓冲器。每个存储器区域105、106、107例如包括存储器104的多个存储単元(例如
用于特定数据量)。存储器区域105、106、107的布局可以由I/O上下文(context)描述,其可以被视为通道108的上下文。产生实体101和消费实体102可以分别包括与该上下文相关联的接 ロ 109、110。举例来说,数据产生实体101将数据103(例如数据流的一部分)写入到存储器104的第一存储器区域105,并且数据消费实体102从第一存储器区域105读取所述数据。为了避免数据消费实体102在数据被完全写入到存储器区域105、106、107之前从存储器区域105、106、107读取所述数据(并且因此读取不完整的并且因此可能毁坏的数据),或者避免数据产生实体101在存储器区域105、106、107被数据消费实体102适当地读取之前写入新的数据,可以锁定存储器区域105、106、107,即可以锁定对于每个存储器区域105、106、107的访问,以允许数据产生实体101或数据消费实体102的排他访问。可以使用多个存储器区域105、106、107以允许数据产生实体101的写入(写入到所述存储器区域中的一个存储器区域)和数据消费实体102的读取(从所述存储器区域中的另一存储器区域读取)同时进行。数据生成实体101和/或数据消费实体102例如可以是计算机系统的一部分,并且可以借助于所述计算机系统的系统计算机总线被耦合到存储器104。根据ー个实施例,数据产生实体101和/或数据消费实体102包括接ロ电路,其也被称作总线主接ロ,借助于所述总线主接ロ来交换数据103 (例如其控制经由存储器104的数据103的交換),并且通过所述总线主接ロ,可以在数据产生实体101与数据消费实体102之间交换同步信息,例如用于确保存储器区域105、106、107在被数据消费实体102读取之前已被数据产生实体101写入(反之亦然)的信息。在下面參照图2描述具有可以形成这种总线主接口和/或实施这种总线主接ロ的部件的数据处理设备。图2示出根据ー个实施例的数据处理设备200。数据处理设备200包括具有多个存储器区域204的存储器203、第一数据处理部件201和控制存储器205,所述控制存储器205对于所述多个存储器区域204中的每个存储器区域包括指示206,其表明是否可以由第一数据处理部件201执行对该存储器区域204的数据访问。 第一数据处理部件201包括检查电路207,其被配置成对于存储器区域204基于对应于该存储器区域204的指示206检查是否可以由第一数据处理部件201执行对该存储器区域204的数据访问。
第一数据处理部件201还包括数据访问电路208,其被配置成在可以由第一数据处理部件201执行对多个存储器区域204中的一个存储器区域的数据访问的情况下执行对该存储器区域204的数据访问。第一数据处理部件201还包括设置电路209,其被配置成响应于第一数据处理部件201完成对存储器区域204的数据访问而设置对应于该存储器区域204的指示206,以表明第一数据处理部件 201不能执行对该存储器区域204的数据访问。数据处理设备200还包括第二数据处理部件202,其中第二数据处理部件202被配置成设置对应于存储器区域204的指示206,以表明第一数据处理部件201可以执行对该存储器区域204的数据访问。控制存储器205可以是第一数据处理部件201的一部分。控制存储器205也可以是第二数据处理部件202的一部分。在控制存储器205不是第一数据处理部件201的一部分的情况下,第一数据处理部件201可能在第一数据处理部件201的存储器中存储了控制存储器205的内容的拷贝。换句话说,第一数据处理部件201可以具有其内容与控制存储器205同步的存储器。应当注意,表明可以对存储器区域204执行数据访问的指示在一个实施例中也可以是表明将对存储器区域204执行数据访问的指示。取决于第一数据处理部件201的数据访问是写入访问还是读取访问,第一数据处理部件201可以对应于数据产生实体101 (如果所述数据访问是写入访问)或数据消费实体102 (如果所述数据访问是读取访问)。应当注意,第二数据处理部件可以具有类似于第一数据处理部件的架构,并且在数据访问是读取访问的情况下可以对应于数据产生实体101,或者在数据访问是写入访问的情况下可以对应于数据消费实体102。第一数据处理部件还可以包括数据处理电路210,其例如被配置成提供将由数据访问存储在存储器203中的(经处理的)数据,或者被配置成处理由数据访问从存储器203读取的数据。控制存储器205、检查电路207、数据访问电路208和设置电路209可以被视为形成第一数据处理部件201的接口。第一数据处理部件201可以借助于计算机总线212 (经由计算机总线212可以执行对存储器203的数据访问)被连接到存储器203。因此,接口211在一个实施例中可以是总线主接口。第一数据处理部件201可以是数据处理设备200的硬件加速器。因此,接口 211在下面也被称作加速器主接口。应当注意,第一数据处理部件201可以包括多个这种接口 211。根据一个实施例,存储器区域204可以被视为数据缓冲器,并且每个数据缓冲器对应于数据块(例如被存储在相应的存储器区域204中)。根据一个实施例,从存储器区域204读取或向存储器区域204写入被存储在该存储器区域204中的数据块。换句话说,一个实施例可以被视为基于以下概念数据是以同步的(例如在第一数据处理部件201或第二数据处理部件202的排他访问方面)原子单位(分别是各存储器区域204或者对应于各存储器区域204的各数据块)交换的。这些原子单位在下面被称作存储器区域。例如可以通过控制器来促进对这些存储器区域的操纵。根据一个实施例,换句话说,检查电路检查第一数据处理部件是否具有对于存储器区域的访问权,并且在完成数据访问之后,设置电路通过相应地设置对应于所述存储器区域的指示来释放访问权。可以借助于信号/消息(例如中断)用信号向检查电路207通知例如由设置电路209或者由第二数据处理元件202执行的控制存储器205的内容改变,从而检查电路207不需要主动检查控制存储器205的改变,例如不执行对控制存储器205的主动轮询。所述信号传送例如由信号传送电路213执行,其可以与控制存储器205 —起被布置在第一数据处理元件201或第二数据处理元件202中。根据ー个实施例,可以和与相应的存储器区域204相关联的各存储器区域204的数据一起(或者对应地与存储在存储器区域204中的数据一起)传递附加的參数。根据ー个实施例,分层存储器区域概念使得能够高效但是仍然灵活地实施用于操纵各存储器区域204的必要基础设施。在一个实施例中,“电路”可以被理解为任何种类的逻辑实施实体,其可以是专用 电路或者执行存储在存储器、固件或其任何组合中的软件的处理器。因此,在一个实施例中,“电路”可以是硬连线逻辑电路或者可编程逻辑电路,例如可编程处理器,比如微处理器(比如复杂指令集计算机(CISC)处理器或精简指令集计算机(RISC)处理器)。“电路”还可以是执行软件的处理器,所述软件例如是任何种类的计算机程序,比如使用例如Java之类的虚拟机代码的计算机程序。根据ー个可替换实施例,将在下面更详细地描述的相应功能的任何其他种类的实施也可以被理解为“电路”。根据ー个实施例,第二数据处理部件被配置成设置对应于存储器区域的指示,以表明第一数据处理部件可以执行对该存储器区域的数据访问,以用于例如指示第一数据处理部件执行对该存储器区域的数据访问。第一数据处理部件还可以包括用于与存储器进行数据交换的存储器接ロ。所述存储器接ロ例如可以是接ロ 211的一部分。举例来说,它可以是数据访问电路208的一部分。第一数据处理部件例如被配置成按照预定顺序执行对存储器区域的数据访问。在一个实施例中,第一数据处理部件包括被配置成接收指示的输入端。举例来说,第二数据处理部件是运行软件过程的处理器,并且其中由所述软件过程发起对应于存储器区域的指示的设置,以表明第一数据处理部件可以执行对该存储器区域的数据访问。在一个实施例中,所述接ロ被配置成把在数据访问的过程中从存储器读取的数据转发到数据处理电路210,或者提供将在数据访问的过程中写入到存储器的数据。存储器区域例如是在共享存储器中分配的缓冲器。存储器区域例如具有相等的大小。所述数据处理设备例如是计算机。在一个实施例中,表明可以由第一数据处理部件执行对存储器区域的数据访问的指示是表明存储在所述存储器区域中的数据块的数据块大小大于零的规范。表明不可由第一数据处理部件执行对存储器区域的数据访问的指示例如是表明存储在所述存储器区域中的数据块的数据块大小是零的规范。在一个实施例中,对于至少ー个存储器区域,除了所述指示之外控制存储器还存储至少ー个參数值,根据所述至少ー个參数值,将由第一数据处理部件执行数据访问或者处理存储在所述存储器区域中的数据。
控制存储器205例如可以被配置成从第二数据处理部件接收所述至少一个参数值。因此,第二数据处理部件202可以被配置成生成并提供所述至少一个参数值。应当注意,第二数据处理部件202的各特征可以包括如上所述的第一数据处理部件201的各特征,反之亦然。换句话说,所述数据处理设备可以包括彼此通信的具有上述特征的两个数据处理部件。下面参照图3描述根据一个实施例的数据处理设备。图3示出根据一个实施例的数据处理设备300。数据处理设备300包括硬件加速器301,其包括加速器核302和本地通用控制器303。加速器核302包括加速器内核304、主接口 305 (或者在一个实施例中是多个主接口)和从接口 306。在单个加速器核302中可以有一个或多个加速器主接口 305,以便满足吞吐量要求。每个加速器主接口 305将加速器内核304连接到数据处理设备300 (例如计算机 系统)的系统总线307。数据处理设备300的存储器308被连接到系统总线307。加速器从接口 306将加速器内核304连接到本地通用控制器303。总线主接口 305可以包括多个寄存器309,其在寄存器传输级(RTL)实施中可以是加速器从接口 306的一部分。在一个实施例中,所述数据处理设备还包括中央同步硬件310。加速器主接口被用于加速器核302对存储器308 (其可以包括一个或多个共享存储器设备)的读取和写入访问(在一个实施例中是所有读取和写入访问),以及用于通过系统总线307向数据处理设备300的软件部件发送消息。它还可以支持与数据处理设备300的其他硬件部件或软件部件的数据同步。加速器主接口 305可以被视为可配置的通用宏,其可以被用作计算机系统的多个(甚至所有)硬件加速器核302中的总线主接口。可以对于每个加速器主接口实例单独地调节通用参数,并且可以在合成之后固定。所有其他参数可以由软件在运行时定义。加速器主接口 305包括多线程总线主控制器311,可选地还有用于存储器区域同步的附加逻辑(包括自动消息电路312和直接同步电路313)以及多个寄存器309中的专用寄存器集合。自动消息电路312例如被连接到数据处理设备300的自动消息仲裁器电路314。加速器主接口 305具有几个端口,其将加速器主接口 305连接到加速器内核304、自动消息仲裁器电路314 (其被连接到本地通用控制器303的消息队列)、系统总线307、以及数据处理设备300的中央同步硬件310。加速器302例如可以经由下面的信号和连接被连接到系统总线307 req :由总线主控制器311用来请求对系统总线307的访问。req_spec :由总线主控制器311用来规定对系统总线307的访问的类型。该信号在其中声明req的周期内携带块地址、簇地址和读取/写入指示符。在跟在请求之后的周期内,它携带突发长度。reqd :使能对于突发事务的每个单个数据阶段的请求。这在应当停止已经开始的突发时是至关重要的。grant :用来用信号向总线主控制器311通知对系统总线307的访问已经被许可。
grantd :对发出请求的主宰(master)(在本例中是总线主控制器311)许可读取数据总线线路(lane) rdata或写入数据总线线路wdata,并且定义所述数据出现在总线上的周期。maddr :用于规定存储器308的存储器地址。wdata :由总线主控制器311用来把将要写入到存储器308中的数据传输到系统总线307上。byteen :由总线主控制器311用来激活存储器308的一部分。rdata:用于将已从存储器308读取的数据通过系统总线307传输到总线主控制器311。wresp :用信号通知写入传输的完成。 加速器内核304和总线主控制器311例如经由下面的信号和连接进行通信 io_trigger_command :由加速器内核304用来发起总线主控制器311的输入输出(I/
O)操作(例如数据访问,比如对存储器308的写入访问或读取访问)。io_trigger_valid :由加速器内核304用来用信号通知,针对I/O操作的发起信号是有效的。data_chunk_size :由加速器内核304用来表明将在所发起的I/O操作的过程中输入或输出的数据量,即数据突发的大小。address_offset :由加速器内核304用来规定存储器区域315内的偏移,在该偏移处,将要输入或输出的数据在所述存储器区域内开始。在一个实施例中,在系统总线消息的情况下,该信号可以被用于消息数据。last_command :表明当前的I/O命令是对于当前存储器区域的最后ー个I/O命令。io_trigger_ack :由总线主控制器311用来确认I/O操作的发起(即触发)。read_data:由总线主控制器311用来把从存储器308读取的数据传输到加速器内核 304。read_data_valid :由总线主控制器311用来表明,经由read_data传输的数据是有效的。write_data_req :由总线主控制器311用来从加速器内核304请求将在I/O操作中写入到存储器308的数据。Write_data :由加速器内核304用来把将要写入到存储器308的数据传输到总线主控制器311。加速器内核304、总线主控制器311、自动消息电路312和直接同步电路313例如可以经由下面的信号和连接进行通信
buffer_compIete :由总线主控制器311用来表明关于存储器区域315的最终I/O操作(例如将数据写入到存储器区域315或者从存储器区域315读取数据)已经完成。bc_ctx :当前的buffer_complete信号所针对的I/O上下文的索引。bc_bufx_phys :当前的buffer_complete信号所针对的控制存储器中的參数寄存器集合的索引。auto_msg_full 由自动消息电路312用来表明其用于待发送的自动消息的缓冲器是满的。
auto_msg_din :用来用信号向自动消息电路312通知将由自动消息电路312发送的自动消息的内容。可以有高达八种(或者在其他实施例中是任何数目的)可配置I/O上下文,以用于在加速器主接口 305的同一实例内使用不同的I/O模式(例如流送模式或随机访问模式)、不同的I/O方向以及多种其他不同参数,其中有用于发送系统总线消息的特殊I/O上下文。应当注意,在数据处理系统301中有多个加速器主接口 305的情况下,可以对于数据处理系统301中的加速器主接口 305的每个实例定义这种I/O上下文。每种I/O上下文由描述该I/O上下文的属性的参数的集合代表。虽然这些参数中的一些可以在加速器主接口 305的设计时是固定的,但是其他参数可以是在运行时配置的。在运行时可配置的I/O上下文参数以及存储器区域参数被映射到寄存器309的寄存器字段的集合,其能够由软件(即由加速器301的本地通用控制器303通过加速器核302的从接口 306)写入,或者能够由硬件(即由加速器内核304或由加速器主接口 305)写入。举例来说,寄存器309包括对应于为加速器302定义的每种I/O上下文的寄存器集合316。寄存 器集合316例如包括I/O上下文寄存器(其包括存储I/O上下文参数的寄存器字段)以及用于存储对应于该I/O上下文的存储器区域参数的寄存器。应当注意,正如已经对于寄存器309提到的那样,在寄存器传输级(RTL)实施中,I/O上下文寄存器可以是加速器从接口模型的一部分。各种I/O上下文可以被同时使用,从而即使是具有加速器主接口 305的仅仅单个实例的单个加速器核302也可以按照交错的方式同时操纵多个输入和输出数据传输。这在图4中被示出。图4示出根据一个实施例的流程图400。在该实例中,总线主控制器311执行编号为0、1和2的三个线程,其中每个线程使用其自身的I/o上下文,其是由对应于该I/O上下文的寄存器集合316的I/O上下文寄存器定义的。图400示出总线主控制器311的I/O命令端口上的数据流(例如包括连接io_trigger_command等等)以及总线主控制器311的数据端口上的数据流(例如包括去往系统总线307的连接wdata、rdata等等)。经由I/O命令端口,五个命令401、402、403、404和405被给予总线主控制器311。根据第一命令401,将从存储器308读取/向存储器308写入第一数据406。根据第二命令402,将从存储器308读取/向存储器308写入第二数据407。根据第三命令403,将从存储器308读取/向存储器308写入第三数据408。在该实例中,第一命令401和第四命令404由总线主线程O处理,第二命令402和第五命令405由总线主线程I处理,以及第三命令403由总线主线程2处理。如所示,经由数据端口串行地传送数据406、407、408。通过由不同线程处理命令401 - 405例如允许甚至在通过数据端口传送了第一数据406之前就由总线主控制器305接收第二命令402。例如利用下面的信号和连接来执行各寄存器309与总线主控制器311之间的通信。io_context_reset :用于重置 I/O 上下文。buffer_base_pointer :用于规定存储器308中的对应于该I/O上下文的第一存储器区域315的起始地址。buffer_size :用于规定存储器区域315的大小。n_buffers_virt :用于规定存储器区域315的数目。start_buffer_virt :用于规定将为之开始处理的存储器区域315 (例如在各存储器区域315的顺序处理中)。例如对于每种I/O上下文存在这些信号和连接。根据ー个实施例,如上所述,基于共享存储器308中的各存储器区域315使用数据同步概念。一般来说,根据一个实施例,数据产生实体(例如过程)101与数据消费实体(例如过程)102的同步是基于把数据103划分成数据块,所述数据块被存储在共享存储器中的各存储器区域中。 下面參照图5更详细地解释对于数据同步使用存储器区域315。图5示出根据ー个实施例的存储器500。存储器500例如对应于数据处理设备300的存储器308。存储器500包括多个存储器区域501,其中每个存储器区域存储ー个数据块502。存储器区域501例如具有对于所有存储器区域501都可以是相等的大小memory_region_size 503ο因此每个数据块502被存储在単独的共享存储器区域501中,其中数据块大小504在所有情况下小于或等于存储器区域大小503。存储器区域501总是每次只对于数据处理设备300的一个部件可访问,不管所述访问是读取访问、写入访问或者混合的读取和写入访问。当前对其给予对存储器区域501的访问的部件也被称作存储器区域501的所有者。它可以是数据处理设备300的硬件部件或软件部件。为了控制特定存储器区域501的所有权,根据ー个实施例使用常见的数据同步概念。该数据同步概念是基于被表示为block_Size的參数,其由一个部件对于每个存储器区域501存储。根据下面的规则来使用该參数
block_size>0 :只有所述部件能够对该存储器区域及其所有參数进行读取/写入访问。
block_size=0 :只有另一部件能够对该存储器区域及其所有參数进行读取/写入访问。这意味着只要对应于该存储器区域的block_SiZe參数大于零,所述部件就可以对该存储器区域进行读取或写入。在那时不允许另一部件进行访问。所述部件一将block_size參数置零(即将其设置为零),另一部件就可以再次访问所述存储器区域。在数据处理设备300的情况下,例如对于每个存储器区域315将block_SiZe參数存储在对应于该存储器区域315的寄存器309中的block_Size參数寄存器中。举例来说,block_size參数可以被存储在对应于在其中使用存储器区域315 (即在其中访问存储器区域315,例如在其中将数据写入到存储器区域315中或者在其中从存储器区域315读取数据)的I/O上下文的寄存器集合316中的block_size參数寄存器中。block_size參数例如可以被本地通用控制器303直接或间接写入。举例来说,控制器303可以把block_Size參数直接写入到对应于存储器区域315的寄存器309中的block_Size参数寄存器中。对于间接的情况,控制器303可以总是写入到寄存器309中的同一寄存器(例如在寄存器地址方面),其被自动地映射到(例如通过特殊电路)存储器区域315的block_size参数寄存器。可以由本地通用控制器303直接或间接轮询block_size参数的值。举例来说,控制器303可以直接轮询(例如读取)存储器区域315的block_SiZe参数寄存器。对于间接的情况,控制器303可以总是轮询同一寄存器,其被自动地映射到(例如通过特殊电路)存储器区域315的block_Size参数寄存器。
根据一个实施例,可以将附加存储器区域参数存储在对应于每个存储器区域315的各寄存器309中。举例来说,对应于一个存储器区域315的附加存储器区域参数驻留在紧跟对应于存储器区域315的block_Size参数寄存器之后的加速器核302的寄存器309中的附加存储器区域参数寄存器中。在一个实施例中,附加存储器区域参数可以是可选的,而block_size参数可以是强制性的。附加存储器区域参数的数目和用途可以在设计时对于每种I/O上下文单独地定义(如果数据处理设备包括多于一个加速器301,则对于每个加速器301的每种I/O上下文单独地定义)。存储器区域参数寄存器还可以被用于(可选的)存储器区域返回值,其也可以在设计时被定义。附加存储器区域参数例如可以规定将要如何处理存储在存储器区域315中的数据(例如可以规定将要对数据执行的功能等等)。附加存储器区域参数例如还可以规定将在另一时间读取存储器区域315。举例来说,各存储器区域315在一个实施例中具有排序,并且随后根据该排序被访问(读取或写入)。附加存储器区域参数例如可以是数据重复比特,通过所述数据重复比特可以规定将要连续两次访问存储器区域315。对应于存储器区域315的存储器区域返回值例如可以由加速器核302在处理了存储在存储器区域315中的数据块之后设置。举例来说,存储器区域返回值可以规定,对于数据的CRC (循环冗余校验)已经成功。类似于存储器区域访问,可以通过block_SiZe参数控制一个部件对于附加存储器区域参数的可访问性
block_size>0 :只有具有附加存储器区域参数寄存器的部件能够对该存储器区域及其所有参数进行读取/写入访问。
block_size=0 :只有另一部件能够对该存储器区域及其所有参数进行读取/写入访问。根据一个实施例,采用分层存储器区域概念。这在图6中被示出。图6示出数据处理装置600。数据处理装置600包括第一存储器601,其包括多个数据对象603。所述数据对象例如对应于数据处理设备300的存储器区域315。数据处理装置600还包括第二存储器602,其包括多个数据存储单元604,其中数据存储单元604的数目少于数据对象603的数目。存储器602例如对应于各寄存器309。数据处理装置600还包括数据处理电路605,其被配置成针对关于多个数据对象603的状态信息访问多个数据存储单元604。所述状态信息例如可以对应于各存储器区域315的block_Size参数值。因此,数据处理装置600例如对应于访问各寄存器309中的block_size參数的总线主控制器311。根据ー个实施例,数据处理装置600包括被配置成根据预定规则选择数据对象603的选择电路606以及被配置成将关于所选数据对象603的状态信息存储在数据存储单元604中的存储电路607。所述选择电路可以被配置成根据数据对象的排序来选择数据对象。应当注意,数据处理电路605、选择电路606和存储电路607不一定必须对应于数据处理设备200的数据访问电路208、检查电路207和设置电路209。然而,数据处理电路605、选择电路606和存储电路607例如可以是第一数据处理部件201的一部分,例如是接ロ 211的一部分。
所述状态信息例如是对数据对象的访问权,并且所述数据对象例如是存储器的存储器区域。换句话说,在一个实施例中,只有完整状态信息的子集(例如对应于所有存储器区域315的block_Size參数值的子集)被映射到(例如加速器核305的寄存器309的)第二存储器602的数据存储単元604。举例来说,在数据处理设备300的情况下,使用两层存储器区域索引,这允许对于单个I/O上下文的高的总存储器区域计数,其中一层存储器区域索引标识出各存储器区域,以及另一层存储器区域索引标识出寄存器309的存储器区域參数集合(例如对应于存储器区域的每个存储器区域參数集合,其包括block_Size存储器区域參数和对应于该存储器区域的附加參数)。状态信息的完整集合可以被视为虚拟參数集合,并且数据存储単元604对应于驻留在控制存储器中的(物理)參数集合。第一层(存储器区域层O)中的索引例如对控制存储器中的參数集合进行寻址,而第二层(存储器区域层I)中的索引对虚拟參数集合进行寻址。这在图7中被示出。图7示出根据ー个实施例的状态信息的映射。在图7的说明中,在控制存储器701中存在编号从O到3的4个存储器区域參数集合、以及编号从O到7的8个存储器区域。换句话说,在寄存器309 (例如寄存器堆)中物理可用的I/O上下文中只有四个存储器区域參数集合。因此对于仅仅其中四个存储器区域702,其自身的存储器区域參数集合(例如包括block_Size參数和附加存储器区域參数)才是寄存器309的一部分。存储器区域702的数目对应于I/O上下文中总的存储器区域计数,并且不需要是控制存储器701中的參数集合数目的整数倍。存储器区域702的数目例如可以由软件编程。它对于不同的I/O上下文也可以是不同的。第一存储器区域层(存储器区域层O)可以代表覆盖4个存储器区域的滑动窗ロ。换句话说,控制存储器701中的存储器区域參数集合包括根据滑动窗ロ的其中四个存储器区域702的參数,例如所述滑动窗ロ具有的滑动方向由存储器区域702编号的递增方向上的箭头703指示。因此,控制存储器701中的參数集合包括对应于其中四个存储器区域702的參数,其中这四个存储器区域702根据所述“滑动窗ロ ”而改变。对于存储器区域层1,加速器主接ロ 305仅仅跟踪将要对其执行下一数据访问的存储器区域315的当前存储器区域索引,并且计算存储器308中将要使用的(即将要访问的)下一存储器区域的起始地址。在一个实施例中,对于存储器区域层I不需要附加的硬件工作。对应于当前未被滑动窗口覆盖的存储器区域(根据当前映射,例如滑动窗口的位置)的所有存储器区域参数可以被隐含地定义(例如可以具有默认值)或者可以借助于软件变量来存储。根据一个实施例,自动消息可以被用于通过专用消息端口用信号向本地通用控制器303通知对存储器区域的数据访问的完成。这些自动消息(在这里也被称作自动消息(Auto-Message))例如是本地消息,并且例如不是通过数据处理设备300的系统总线307发送的消息。所述自动消息特征如果被实施的话,则可以通过软件(例如通过使用加速器核302的寄存器309中的控制比特)对于每个I/O上下文被接通或断开。当要发送自动消息时,加速器主接口 305的自动消息电路312生成自动消息数据字,其例如包括
加速器核索引(在硬件加速器301中有多个加速器核的情况下用于标识加速器核 302)
加速器主接口索引(在加速器核302中有多个加速器主接口的情况下用于标识加速器主接口 305)
I/o上下文索引(用于标识I/O上下文)
存储器区域索引
控制存储器中的存储器区域参数集合的索引
所生成的自动消息被传送到自动消息仲裁器(例如经由对应的加速器主接口)。自动消息仲裁器314可以被布置在加速器核302 (或多个加速器核302)与本地通用控制器303之间以用于对软件的自动消息递送。举例来说,当两个或更多主接口 305想要同时发送自动消息时,自动消息仲裁器遵循循环式方案。自动消息电路312例如可以借助于下面的连接和信号与自动消息仲裁器314进行通信
auto_msg_dout :由自动消息电路312用来传送将要发送的自动消息。auto_msg_valid 由自动消息电路312用来表明,传送到自动消息仲裁器314的自动消息是有效的。auto_msg_ack 由自动消息仲裁器314用来确认从自动消息电路312接收到自动消息。此外,在自动消息传送的情况下可以使用下面的信号和连接来与总线主控制器311进行通信
acc_core_index :用于在自动消息传送的情况下对加速器核302进行寻址。master_if_index :用于在自动消息传送的情况下对主接口 305进行寻址。根据一个实施例,加速器主接口 305具有用于连接到数据处理设备300的中央同步硬件310的端口,其在图3所示的实例中由直接同步电路313和同步总线仲裁器电路317形成。直接同步电路313可以被用于自主存储器区域同步,其在下面被称作直接同步(Direct Sync)。直接同步可以包括在没有本地通用控制器303的任何每存储器区域交互的情况下将预配置的block_size参数值写入到寄存器309。加速器内核304可能无法辨别block_size參数值是由硬件(即由直接同步功能)还是由软件(或者由控制器303)写入的。block_SiZe參数的预配置的值例如可以总是被写入到控制存储器中的将为相应的I/O上下文配置的下一存储器区域參数集合的block_Size寄存器中。该參数集合在控制存储器中的索引例如可以是利用计数器生成的。直接同步特征如果被实施的话,则可以通过软件(例如利用加速器核的从寄存器中的控制比持)对于每个I/o上下文被接通或断开。直接同步电路313和同步总线仲裁器电路317例如可以利用下面的信号和连接进行通信。synci_valid (同步发起者有效):当被激活时,该信号表明发起者通道上的有效输入。synci_valid_oms (来自所述层的其他主宰的发起者有效信号):当被激活时,来自 优先级更高的主宰的该信号禁用发起字的输出。利用直接同步的每个其他加速器主接ロ实例有ー个比特,本地控制器有ー个比特。synci_mid :发起主宰的ID。所述映射将通过使用通用參数来定义。synci_type (发起字类型)
0:访问发起的第I周期寻址,读取/写入指示
1:写入发起的第2周期写入数据。synci_type_oms (来自所述层的其他主宰的发起字类型):来自主宰的I表明写入数据阶段,其不应与寻址阶段分开。即使当优先级更高时,这也禁用发起字的输出。利用直接同步的每个其他加速器主接ロ实例有ー个比特,本地控制器有ー个比特。synci_data (发起者数据)发起字,复用地址(14比特,包括用于对代理功能进行编码的3比持),读取/写入指示符(I比持),以及写入数据(8比持)。写入事务的两个阶段总是连续传送的。syncr_valid (同步响应有效)已激活的信号表明响应通道上的有效输入。syncr_mid (响应接收器的主宰ID):该主宰仅仅接受被适当地寻■址的响应。所述映射将通过使用通用參数来定义。syncr_data (读取数据):其内容对于写入访问不关心。在加速器主接口中没有在内部连接。仅仅出于兼容性原因而規定。虽然已经參照具体实施例特别示出并描述了本发明,但是本领域技术人员应当理解,在不背离所附权利要求书所限定的本发明的精神和范围的情况下,在其中可以在形式和细节方面做出各种改变。因此,本发明的范围由所附权利要求书指示,并且因此意图包含处在权利要求书的等同物的含义和范围内的所有改变。
权利要求
1.一种数据处理设备,包括 包括多个存储器区域的存储器; 第一数据处理部件; 控制存储器,其对于所述多个存储器区域中的每个存储器区域包括表明是否可以由第一数据处理部件执行对该存储器区域的数据访问的指示;以及 第二数据处理部件; 其中,第一数据处理部件包括 检查电路,其被配置成基于对应于存储器区域的所述指示对于该存储器区域检查是否可以由第一数据处理部件执行对该存储器区域的数据访问; 数据访问电路,其被配置成在可以由第一数据处理部件执行对所述多个存储器区域中的一个存储器区域的数据访问的情况下执行对该存储器区域的数据访问;以及 设置电路,其被配置成响应于第一数据处理部件对存储器区域的数据访问的完成而设置对应于该存储器区域的所述指示以表明不可以由第一数据处理部件执行对该存储器区域的数据访问; 以及其中,第二数据处理部件被配置成设置对应于存储器区域的所述指示以表明第一数据处理部件可以执行对该存储器区域的数据访问。
2.根据权利要求I所述的数据处理设备,其中,第二数据处理部件被配置成设置对应于存储器区域的所述指示以表明第一数据处理部件可以执行对该存储器区域的数据访问。
3.根据权利要求I所述的数据处理设备,其中,第一数据处理部件还包括用于与所述存储器进行数据交换的存储器接口。
4.根据权利要求I所述的数据处理设备,其中,第一数据处理部件被配置成按照预定顺序执行对存储器区域的数据访问。
5.根据权利要求I所述的数据处理设备,其中,第一数据处理部件包括被配置成接收所述指示的输入端。
6.根据权利要求I所述的数据处理设备,其中,第二数据处理部件是运行软件过程的处理器,以及其中由所述软件过程发起对应于存储器区域的所述指示的设置以表明第一数据处理部件可以执行对该存储器区域的数据访问。
7.根据权利要求I所述的数据处理设备,其中,第一数据处理部件还包括数据处理电路和接口,所述接口被配置成在数据访问的过程中把从所述存储器读取的数据转发到所述数据处理电路,或者在数据访问的过程中提供将要写入到所述存储器的数据。
8.根据权利要求I所述的数据处理设备,其中,所述存储器区域是在共享存储器中分配的缓冲器。
9.根据权利要求I所述的数据处理设备,其中,所述存储器区域具有相等的大小。
10.根据权利要求I所述的数据处理设备,其是计算机。
11.根据权利要求I所述的数据处理设备,其中,表明可以由第一数据处理部件执行对存储器区域的数据访问的所述指示是表明存储在该存储器区域中的数据块的数据块大小大于零的规范。
12.根据权利要求I所述的数据处理设备,其中,表明不可以由第一数据处理部件执行对存储器区域的数据访问的所述指示是表明存储在该存储器区域中的数据块的数据块大小是零的规范。
13.根据权利要求I所述的数据处理设备,其中,对于至少一个存储器区域,除了所述指示之外,所述控制存储器还存储至少一个参数值,根据所述至少一个参数值,将由第一数据处理部件执行数据访问或者处理存储在该存储器区域中的数据。
14.根据权利要求13所述的数据处理设备,其中,所述控制存储器被配置成从第二数据处理部件接收所述至少一个参数值。
15.一种数据处理设备的数据处理部件,所述数据处理部件包括 控制存储器,其对于多个存储器区域中的每个存储器区域包括表明是否可以由第一数据处理部件执行对该存储器区域的数据访问的指示; 检查电路,其被配置成基于对应于存储器区域的所述指示对于该存储器区域检查是否可以由第一数据处理部件执行对该存储器区域的数据访问; 数据访问电路,其被配置成在可以由第一数据处理部件执行对所述多个存储器区域中的一个存储器区域的数据访问的情况下执行对该存储器区域的数据访问; 设置电路,其被配置成响应于第一数据处理部件对存储器区域的数据访问的完成而设置对应于该存储器区域的所述指示以表明不可以由第一数据处理部件执行对该存储器区域的数据访问。
16.一种数据处理装置,包括 包括多个数据对象的第一存储器; 包括多个数据存储单元的第二存储器,其中数据存储单元的数目少于数据对象的数目; 数据处理电路,其被配置成针对关于所述多个数据对象的状态信息访问所述多个数据存储单兀; 选择电路,其被配置成根据预定规则从所述多个数据对象中选择数据对象; 存储电路,其被配置成把关于所选数据对象的状态信息存储在所述多个数据存储单元的数据存储单元中。
17.根据权利要求16所述的数据处理装置,其中,所述选择电路被配置成根据数据对象的排序来选择数据对象。
18.根据权利要求16所述的数据处理装置,其中,所述状态信息是对数据对象的访问权。
19.根据权利要求16所述的数据处理装置,其中,所述数据对象是存储器的存储器区域。
全文摘要
本发明公开了数据处理设备和数据处理装置。描述了具有存储器以及第一和第二数据处理部件的数据处理设备。第一数据处理部件包括控制存储器,其对于所述存储器的多个存储器区域中的每个存储器区域包括表明是否可以由第一数据处理部件执行对该存储器区域的数据访问的指示;以及数据访问电路,其被配置成在可以由第一数据处理部件执行对所述多个存储器区域中的一个存储器区域的数据访问的情况下执行对该存储器区域的数据访问;以及设置电路,其被配置成响应于第一数据处理部件对存储器区域的数据访问的完成而设置对应于该存储器区域的所述指示以表明不可以由第一数据处理部件执行对该存储器区域的数据访问。
文档编号G06F13/16GK102855199SQ20121021460
公开日2013年1月2日 申请日期2012年6月27日 优先权日2011年6月27日
发明者M.绍尔曼, A.沙科夫, C.格拉斯曼, U.哈赫曼, R.克拉默 申请人:英特尔移动通信有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1