CN104850391B - 处理多个数据集的装置及其方法 - Google Patents
处理多个数据集的装置及其方法 Download PDFInfo
- Publication number
- CN104850391B CN104850391B CN201410190866.3A CN201410190866A CN104850391B CN 104850391 B CN104850391 B CN 104850391B CN 201410190866 A CN201410190866 A CN 201410190866A CN 104850391 B CN104850391 B CN 104850391B
- Authority
- CN
- China
- Prior art keywords
- data
- data set
- write
- type
- map information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000003860 storage Methods 0.000 claims abstract description 116
- 238000012545 processing Methods 0.000 claims abstract description 31
- 238000013507 mapping Methods 0.000 claims description 12
- 238000003672 processing method Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 8
- 230000017105 transposition Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000000151 deposition Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000010186 staining Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3555—Indexed addressing using scaling, e.g. multiplication of index
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/122—Tiling
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/123—Frame memory handling using interleaving
Abstract
本发明提供一种处理多个数据集的装置及其方法。该处理多个数据集的装置包括:存储模块,包括配置为存储多个数据集的N个存储单元;以及数据存取模块,配置为根据对应于数据集和第一写映射信息和第二写映射信息中的一个的写数据索引,将数据集写入存储模块,其中当数据类型为标量类型和矢量类型中的一个时,采用第一写映射信息;以及当数据类型为标量类型和矢量类型中的另一个时,采用第二写映射信息;该第一写映射信息和该第二写映射信息中的每一个包括写数据移动信息和写地址移动信息。本发明所提供的处理多个数据集的装置及其方法,支持标量和矢量数据相互换位。
Description
技术领域
本发明是有关于一种处理多个数据集的装置及其方法,特别是有关于一种支持标量和矢量数据相互换位机制的处理多个数据集的装置及其方法。
背景技术
在大多数图形引擎接口中,由于矢量类型和标量类型仅在某一些方面具有优势,矢量类型和标量类型之间的数据换位(transposition)操作是不可避免的。具体来说,操作数据遵从在GPU着色器内部的标量类型的“标量机”需要专用的换位引擎以执行在矢量和标量数据集之间的数据变换,以用于与在GPU着色器外部遵从矢量类型的数据路径通信。当输入矢量数据至GPU着色器并从GPU着色器输出标量数据时,由于需要换位数据的额外的指令和硬件,性能和效率将由此降低。相反,操作数据遵从在GPU着色器内部的矢量类型的“矢量机”,能够与GPU非着色器通信而不要数据换位。然而,由于输入数据的平均尺寸低于预定规格,矢量机在追求高效率的系统中不受欢迎。
为消除上述困境,同时支持标量和矢量的设计会是具有竞争力的方案。因此,有必要提出一种标量和矢量数据相互换位的机制,以具有标量和矢量机制两者的优点。
发明内容
有鉴于此,本发明提出一种处理多个数据集的装置及其方法。
根据本发明第一实施方式,提供一种处理多个数据集的装置。其中,多个数据集中的数据集包括N个分量,并且数据集的数据类型为标量类型或矢量类型;其中N为正整数。该处理多个数据集的装置包括:存储模块,包括配置为存储多个数据集的N个存储单元;以及数据存取模块,配置为根据对应于数据集和第一写映射信息和第二写映射信息中的一个的写数据索引,将数据集写入存储模块。其中当数据类型为标量类型和矢量类型中的一个时,采用第一写映射信息;以及当数据类型为标量类型和矢量类型中的另一个时,采用第二写映射信息,该第一写映射信息和该第二写映射信息中的每一个包括写数据移动信息和写地址移动信息。
根据本发明第二实施方式,提供一种处理多个数据集的方法。其中,多个数据集中的数据集包括N个分量,并且数据集的数据类型为标量类型或矢量类型;其中N为正整数。该处理多个数据集的方法包括:根据对应于数据集和第一写映射信息和第二写映射信息中的一个的写数据索引,将数据集写入存储模块。其中存储模块包括配置为存储多个数据集的N个存储单元,以及当数据类型为标量类型和矢量类型中的一个时,采用第一写映射信息,当数据类型为标量类型和矢量类型中的另一个时,采用第二写映射信息,该第一写映射信息和该第二写映射信息中的每一个包括写数据移动信息和写地址移动信息。
本发明所提出的处理多个数据集的装置及其方法,可支持标量和矢量数据相互换位。
附图说明
图1为根据本发明实施方式的处理多个数据集的装置的示意图。
图2为根据本发明实施方式的数据分配的示意图。
图3为根据本发明另一实施方式的数据分配的示意图。
图4为根据本发明另一实施方式的处理多个数据集的装置的示意图。
具体实施方式
在说明书及权利要求书当中使用了某些词汇来指称特定的组件。本领域技术人员应可理解,硬件制造商可能会用不同的名词来称呼同样的组件。本说明书及权利要求书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及权利要求书当中所提及的“包含”为开放式的用语,故应解释成“包含但不限定于”。此外,为统一索引方式,存储器地址的索引从0开始,并且一个存储单元具有4个条目,存储地址0可以表示为2’b00,其他编号方式(例如,数据序列数或存储地址(条目)索引)从“1”或者“第一”开始。举例来说,存储单元的第一条目对应于存储地址2’b00。
图1为根据本发明实施方式的处理多个数据集的装置的示意图。装置100包括数据存取模块102和存储模块104。数据存取模块102接收标量/矢量信号N11、写数据索引N12、以及多个数据集N13。对于多个数据集N13中的一个数据集来说,该数据集包括N个分量并且该数据集具有标量类型和矢量类型中的一种数据类型,其中N为正整数。举例来说,数据集为具有4个分量的标量,每一个分量代表4个图像数据变量中相应的红色分量(redcomponent,以下简称R分量),并且该4个分量可以表示为{R(1),R(2),R(3),R(4)}。其中,R(1)为图像数据变量1的R分量,R(2)为图像数据变量2的R分量;以此类推。在另一个例子中,数据集可以为具有3个分量的矢量,每一个分量代表图像数据变量中的红分量、绿分量(green component,以下简称G分量)、蓝分量(blue component,以下简称B分量)中的一个,并且该3个分量可以表示为{R(4),G(4),B(4)}。其中R(4)为图像数据变量4的R分量,G(4)为图像数据变量4的G分量,以此类推。为了解数据集为标量类型还是矢量类型,使用对应于数据集的标量/矢量信号N11。举例来说,当标量/矢量信号N11为0时,意味着数据集为标量类型;当标量/矢量信号N11为1时,意味着数据集为矢量类型。在实践中,多个数据集N13可以连续地(serially)接收,即在接收一个数据集之后的时刻接收另一个数据集。为达到更好的系统效率,具有N个分量的数据集需要在一个操作周期内存入存储模块104。请注意,在数字电路设计中,通常使用时钟来定义电路的时序。对于装置100来说,数据存取模块102和存储模块104均具有时钟信号。因此,操作周期可以为时钟周期。在一些应用中,多个数据集N13的每一个可以具有相同的分量数,但是有可能一个数据集的分量数不同于另一个数据集的分量数。无需额外的存储缓冲器,这表明存储模块104可以包括至少N个存储单元,其中每一个存储单元可以为静态随机存取存储器(SRAM)、动态随机存储存储器(DRAM)、或用于一个操作周期存储一个分量的寄存器文件(register file)。请注意,确定每一个存储单元的条目的数目或存储能力,依赖于多个数据集N13的数据集数目。举例来说,为将数据集正确地写入存储模块而不会复写先前存储的数据集,可以使用写数据索引N12。对于数据集来说,对应的写数据地址指示数据集的分量应该被写入存储单元的哪一个条目,该对应的写数据地址可以从写数据索引N12中得到。举例来说,写数据索引N12可以相对于不同的数据集而改变,以用于协助产生多个数据集N13的每一个的存储单元的正确地址。这样,数据存取模块102被配置为写数据集至存储模块104。然而,为实现使用装置的同时支持标量读取、标量写入、矢量读取、以及矢量写入操作的目标,一个良好的设计写映射方案需要分配多个数据集N13至存储单元。具体地,数据存取模块被配置为根据对应于数据集和第一写映射信息和第二写映射信息中的一个的写数据索引N12写数据集至存储模块。其中当数据集的数据类型为标量类型时,采用第一写映射信息;当数据集的数据类型为矢量类型时,采用第二写映射信息。
在说明怎样使用第一写映射信息和第二写映射信息之前,需要提及对于上述揭示的装置的数个变化形式,并考虑到这些变化形式也落入本发明的保护范围。首先,如上述可知,写数据索引N12为装置100的输入,以用于协助写数据集至存储单元期望的条目。然而,在一些情况下,写数据索引N12可以通过具有适当初始化机制的一些简单的逻辑电路而在装置100中产生。只要对应于数据集的写数据索引N12的数据存储映射是正确的,那么是否在外部提供写数据索引N12不是很重要。同样的原理可以应用于标量/矢量信号N11,并且不一定需要标量/矢量信号N11作为装置100的输入。第二,数据集的分量数目可以根据设计考量而增加或减少,但是需要相应地调节存储单元的数目。第一数据集的分量数不需要和第二数据集的分量数相同。举例来说,存储单元的数目被设置为等于或大于数据集的分量数目。第三,数据的分量不限于R分量、G分量、B分量和A分量(即透明分量),也可以为其他分量。R分量、G分量、B分量和A分量作为分量使用仅用于解释本发明,而并非用于限制本发明的保护范围。
请参考图2,图2为根据本发明实施方式的数据分配的示意图。在图2的右边,图2描述了怎样将多个数据集N13安排在存储模块104的存储单元中。在此实施方式中,多个数据集N13中有四个数据集,每一个数据集具有4个分量,以及在存储模块104中具有4个存储单元,每一个存储单元具有4个条目。首先,假设多个数据集N13为标量类型。这样,通过数据存取模块102接收的第一数据集可以被写入存储模块104,该第一数据集可以表示为{R(1),R(2),R(3),R(4)}。其中,R(1)、R(2)、R(3)和R(4)分别为图像数据变量1、图像数据变量2、图像数据变量3和图像数据变量4的R分量。在第一个操作周期内,第一数据集的每一个分量可以被写入对应的存储单元的对应的条目。具体来说,R(2)分量被写入第二存储单元的第一条目,即存储器地址为2’b00的对应存储位置。相似地,在第二操作周期内,第二数据集{G(1),G(2),G(3),G(4)}可以被写入对应的存储单元的对应的条目。举例来说,G(3)分量被写入第四存储单元的第二条目,即存储器地址为2’b01的对应的存储位置。如图2所示,在四个操作周期之后,多个数据集N13被布置于存储模块中。另一方面,当多个数据集N13为矢量类型,方案如下所示。通过数据存取模块102接收的第一数据集为{R(1),G(1),B(1),A(1)}。其中R(1)为第一数据集的R分量,G(1)为第一数据集的G分量,以此类推。在第一个操作周期内,第一数据集的每一个分量被写入对应的存储单元的对应的条目。举例来说,B(1)分量被写入第三存储单元的第三条目。如图2所示,通过类似的方法,在四个操作周期之后,矢量类型的多个数据集N13被布置于存储单元中。
从图2先前的描述来看,可以得出以下几个观点。第一,对于多个数据集N13中的数据集来说,可以看出,在一个操作周期内,数据存取模块102将数据集写入存储模块104。此外,当数据集在一个操作周期内不能被接收时,数据集也可以在多个操作周期被写入存储模块104。当输入数据率不高并且可以连续(serially)地接收数据集的分量时,采用多个操作周期接收一个数据集的方案很普遍。第二,当当前接收的数据集为标量类型时,采用第一写映射信息,并且将数据集的分量对应至存储模块104的相应的存储单元的相同条目。具体来说,第四数据集{A(1),A(2),A(3),A(4)}的分量被存储至对应的存储单元的第四条目。相反,当当前接收的数据集为矢量类型时,采用第二写映射信息,并且将数据集的分量对应至存储模块104的不同存储单元的不同条目。举例来说,第三数据集{R(3),G(3),B(3),A(3)}的分量被分别存储至第三存储单元的第一条目、第四存储单元的第二条目、第一存储单元的第三条目、以及第二存储的第四条目。第三,通过交换标量类型数据集和矢量类型数据集的布置原则,可以得到如图3所示的另一个数据布置的配置文件(profile)。图3为根据本发明另一实施方式的数据分配的示意图。在此方案中,第一写映射信息将数据集的分量对应至存储模块104的不同存储单元的不同条目,以及第二写映射信息将数据集的分量对应至存储模块104的不同存储单元的相同条目。
以下描述的举例将给出怎样使用写数据索引N12、第一写映射信息、和第二写映射信息来布置多个数据集N13。通过参考图2中的数据布置,考虑当前接收的数据集为标量类型并使用第一写映射信息来举例。在一个实施方式中,第一写映射信息可以包括两种信息(写数据移动(shuffle)信息和写地址移动信息)。对于给定的数据集,根据写数据索引N12,写数据移动信息可以将数据集的分量对应至存储模块104的不同存储单元。然后,写地址移动信息可以根据写数据索引N12将数据集的分量对应至存储单元的条目中的一个。请参考下表的写数据移动信息的举例。
表1第一写映射信息的写数据移动信息
写数据索引 | 2’b00 | 2’b01 | 2’b10 | 2’b11 |
至第一存储单元的分量 | 第一分量 | 第四分量 | 第三分量 | 第二分量 |
至第二存储单元的分量 | 第二分量 | 第一分量 | 第四分量 | 第三分量 |
至第三存储单元的分量 | 第三分量 | 第二分量 | 第一分量 | 第四分量 |
至第四存储单元的分量 | 第四分量 | 第三分量 | 第二分量 | 第一分量 |
在此表中,写数据索引的行代表与特定数据集相关的写数据索引N12。第一存储单元的分量栏(field)意味着数据集的哪一个分量被分配至第一存储单元。举例来说,当接收第一数据集{R(1),R(2),R(3),R(4)}时,写数据索引N12被设置为2’b00。然后,将第一分量R(1)对应至第一存储单元,以及将第二分量R(2)对应至第二存储单元,以此类推。另一方面,当接收第三数据集{B(1),B(2),B(3),B(4)},写数据索引N12被设置为2’b10时,将第三分量B(3)对应至第一存储单元,将第一分量B(1)对应至第三存储单元,以此类推。对于给定的数据集,一旦将数据集的分量对应至存储单元,采用写地址移动信息来将数据集的分量对应至对应的存储单元的条目。关于第一写映射信息的写地址移动信息的举例如表2所示。
表2第一写映射信息的写地址移动信息
表2中的写数据索引的行与表1中的写数据索引的行具有相同的含义。第一存储单元的地址行意味着数据集对应的分量将存储至哪一个条目。举例来说,在表1中,已知第一数据集的第一分量R(1)被分配至第一存储单元;然后在表2中,通过地址2’b00(即,表2的第二行、第二列为2’b00),第一分量R(1)将被写入第一存储单元。换句话说,R(1)被写入第一存储单元的第一条目。实际上,第一数据集的所有分量将通过使用地址2’b00而被写入对应的存储单元;也就是说,第一数据集的每一个分量将被写入相应的存储单元的第一条目。相似地,第四数据集的所有分量将被写入对应的存储单元的第四条目。通过利用第一写映射信息的写数据移动信息和写地址移动信息,可以看出标量类型的多个数据集N13确实被写入具有图所示的布置的存储模块。
同样,第二写映射信息也可以包括写数据移动信息和写地址移动信息。两个信息如何写矢量类型的多个数据集N13至存储模块104的原理基本上和表1和表2描述的标量类型数据的情况相同。第二写映射信息的写数据移动信息的实施方式如表3所示。
表3第二写映射信息的写数据移动信息
写数据索引 | 2’b00 | 2’b01 | 2’b10 | 2’b11 |
至第一存储单元的分量 | 第一分量 | 第四分量 | 第三分量 | 第二分量 |
至第二存储单元的分量 | 第二分量 | 第一分量 | 第四分量 | 第三分量 |
至第三存储单元的分量 | 第三分量 | 第二分量 | 第一分量 | 第四分量 |
至第四存储单元的分量 | 第四分量 | 第三分量 | 第二分量 | 第一分量 |
通过参考表3的第二列,意味着第一数据集的第一分量R(1)对应至第一存储单元,第一数据集的第二分量G(1)对应至第二存储单元,第一数据集的第三分量B(1)对应至第三存储单元,以及第一数据集的第四分量A(1)对应至第四存储单元。通过参考表3的第三列、第四列、第五列,可以轻易得到其他三个数据集的对应分量。数据集的分量对应的条目如表4所示。
表4第二写映射信息的写地址移动信息
请首先关注表4的第二列,其描述了第一数据集{R(1),G(1),B(1),A(1)}的分量如何对应至该分量对应的存储单元的条目。写数据索引N12为2’b00,假设第一数据集是当前接收到的。在表3中,第一数据集的第二分量G(1)对应至第二存储单元。通过进一步查看表4中的第二列、第三行,可以了解G(1)被写入具有地址为2’b01的第二存储单元。即,G(1)被写入第二存储单元的第二条目。再举一个例子,来了解第三数据集的第一分量R(3)如何映射至存储模块。在表3中,第三数据集的第一分量R(3)对应至第三存储单元。在表4的第四行、第四列中,R(3)对应至第三存储单元的第一条目,或者说R(3)写入具有地址为2’b00的第三存储单元。如图2所示,通过结合使用表3和表4,矢量类型的多个数据集N13也被布置于存储模块中。请注意,首先,为实现第一写映射信息和第二写映射信息,需要一些组合逻辑(combinational logics),例如复用器。由于此种电路的实现技术对于本领域技术人员来说是简单明了的,为求简洁省略相关的描述。第二,上述描述揭示了所有的数据集为标量类型或矢量类型的情况。在实际中,两种类型均可在多个数据集中出现。不难看出,仍然可以应用本发明的原理于两种类型均出现的情形中。第三,在不脱离本发明精神的前提下,得到的其他详细的映射方案均落入本发明的保护范围。
在引入本发明的其他实施方式之前,需要强调几点。在一些情况下,写数据索引N12可以被实现为写数据分量索引。具体来说,对于每一个数据集具有四个分量的四个数据集来说,意味着写数据索引N12可以将四个数据集的每一个分量直接对应至存储模块的存储单元的条目。考虑到有四个存储单元以及每一个存储单元具有四个条目,第一写映射信息可以为具有16个元素(element)的表格,以及每一个元素具有关于存储模块的16个条目中的哪一个存储四个数据集的分量的信息。通过这种方式,第一写映射信息可以不包括两个表格。此原理可以应用于第二写映射信息并且两个16元素的表格足够写四个数据集至存储模块。其中当四个数据集为标量类型时,采用一个16元素的表格;以及当四个数据集为矢量类型时,采用其他16元素的表格。
请参考图4,图4为根据本发明另一实施方式的处理多个数据集的装置的示意图。装置400包括数据存取模块402、存储模块404。根据写数据索引N42和写标量/矢量信号N41通过数据存取模块402将多个数据集N43写入存储模块404之后,数据存储模块402进一步被配置为读出多个数据集N43,以提供多个输出数据集N44,其中多个输出数据集N44包括N个分量。数据存取模块402进一步接收读数据索引N45和读标量/矢量信号N46作为输入,并输出多个输出数据集N44。读数据索引N45对应至提供的特定的输出数据集,并指示输出数据的分量从存储模块404的哪一个条目中检索(retrieved)。读标量/矢量信号N46指示当前提供的输出数据集为标量类型还是矢量类型。由于多个数据集N43被写入图2所示的存储模块404,将首先简要介绍如何提供包括四个标量分量或矢量分量的输出数据集的举例。具体来说,若提供矢量类型的输出数据集{R(1),G(1),B(1),A(1)},则可以在一个操作周期内完成。在此操作周期内,读第一存储单元的第一条目、第二存储单元的第二条目、第三存储单元的第三条目、以及第四存储单元的第四条目,并获得输出数据集。作为另一个例子,若提供标量类型的输出数据集{B(1),B(2),B(3),B(4)},则读第一存储单元的第三条目以得到B(3)、第二存储单元的第三条目以得到B(4)、第三存储单元的第三条目以得到B(1)、以及第四存储单元的第三条目以得到B(2)。利用电路(例如,复用器)的额外的数据移动需要使输出数据集按需要的顺序设置。因此,数据存取模块从存储模块读出多个数据集N43以产生多个输出数据集N44,其中输出数据集包括标量类型或矢量类型的四个分量,并在一个操作周期提供该输出数据集。请注意,在一些情况下,输出数据集可以在多个操作周期内提供。此外,可以在两个连续的操作周期内提供多个输出数据集N44的两个输出数据集,其中该两个输出数据集的数据类型为矢量类型和矢量类型、标量类型和标量类型、矢量类型和标量类型、或标量类型和矢量类型。具体地,根据对应于输出数据集和第一读映射信息和第二读映射信息中的一个的读数据索引N45,提供输出数据集。其中,当输出数据集为标量类型时,采用第一读映射信息,并且将数据集的分量从存储模块404的相应的存储单元的相同条目中读出;当输出数据集为矢量类型时,采用第二读映射信息,并且将数据集的分量从存储模块404的不同存储单元的不同条目中读出。以下将介绍如何采用第一读映射信息和第二读映射信息来产生标量类型或矢量类型的输出数据集。
首先,考虑从图2的数据布置中提供的输出数据集为标量类型(例如,当读标量/矢量信号N46为0时),以使得根据读数据索引N45并通过数据存取模块402而采用第一读映射信息。在一个实施方式中,第一读映射信息可以包括读地址移动信息和读数据移动信息。读地址移动信息被配置为根据读数据索引N45从四个存储单元中的每一个存取一个条目,以使得输出已存取数据N47;以及根据读数据索引N45将读数据移动信息配置为移动已存取数据N47,以使得产生输出数据集。读地址移动信息的举例如表5所示。
表5第一读映射信息的读地址移动信息
举例来说,当如表5第三列所示读数据索引N45为2’b01时,指示提供的输出数据集为{G(1),G(2),G(3),G(4)},以及从此列可知,输出数据集的分量从具有地址为2’b01的对应的存储单元中读出。换句话说,输出数据集的分量从对应的存储单元的第二条目中读出。然而,通过简单读取每一个存储单元的第二条目,得到{G(4),G(1),G(2),G(3)}作为已存取数据N47。因为对于一些应用而言,需要输出数据集的分量的顺序与原始写数据集(即,多个数据集N43)的顺序相同。需要用于移动存取数据N47的分量顺序的一些复用机制,并且这是读数据移动信息所做的。读数据移动信息如表6所示。
表6第一读映射信息的读数据移动信息
为移动存取数据{G(4),G(1),G(2),G(3)}以产生输出数据集{G(1),G(2),G(3),G(4)},存取数据的第二分量G(1)被移至第一地点,存取数据的第三分量G(2)被移至第二地点,存取数据的第四分量G(3)存取数据的第四分量被移至第三地点被移至第三地点,以及存取数据的第一分量G(4)被移至第四地点。这在表6的第三列中得到体现。通过采用与表5和表6相似的方式,标量类型的输出数据集可以从先前写入的多个数据集N43中提供。对于读取矢量类型的输出数据集的情况,第二读映射信息的地址移动信息和数据移动信息可以轻易地从上述实施方式中推导出来。因此,为求简洁,省略相关描述。
总而言之,装置400可以作为位于GPU着色器中的GPU着色器的输入/输出包装(wrapper),以能够光滑和有效地与位于外部的数据路径进行通信,该GPU着色器的输入/输出包装允许核心引擎(core engine)(例如,算术逻辑单元)。一旦输入数据类型从标量类型改变为矢量类型(反之亦然),由于装置400完全和全权负责数据换位工作,核心引擎甚至不会注意此改变。因此,本发明有效地在标量类型数据和矢量类型数据之间相互换位(transpose)。如上所述,装置400可以在一个操作周期内存取标量类型或矢量类型的数据集。装置400也可以提供GPU的矢量数据和标量数据存取,而不需要额外的硬件换位引擎。
虽然本发明已以较佳实施方式揭露如上,然而必须了解其并非用以限定本发明。相反,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围应当以权利要求书所界定的保护范围为准。
Claims (24)
1.一种处理多个数据集的装置,其特征在于,该多个数据集中的数据集包括N个分量,并且该数据集的数据类型为标量类型或矢量类型;其中N为正整数;该处理多个数据集的装置包括:
存储模块,包括配置为存储该多个数据集的N个存储单元;以及
数据存取模块,配置为根据对应于该数据集和第一写映射信息和第二写映射信息中的一个的写数据索引,将该数据集写入该存储模块,其中当该数据类型为该标量类型和该矢量类型中的一个时,采用该第一写映射信息;以及当该数据类型为该标量类型和该矢量类型中的另一个时,采用该第二写映射信息;
该第一写映射信息和该第二写映射信息中的每一个包括写数据移动信息和写地址移动信息。
2.根据权利要求1所述的处理多个数据集的装置,其特征在于,该第一写映射信息将该数据集的分量对应至该存储模块的不同存储单元的相同条目。
3.根据权利要求1所述的处理多个数据集的装置,其特征在于,该第二写映射信息将该数据集的分量对应至该存储模块的不同存储单元的不同条目。
4.根据权利要求1所述的处理多个数据集的装置,其特征在于:
写数据移动信息,配置为根据该写数据索引将该数据集的分量对应至该存储模块的不同存储单元;以及
写地址移动信息,配置为根据该写数据索引将该数据集的分量对应至该存储单元的多个条目中的一个。
5.根据权利要求1所述的处理多个数据集的装置,其特征在于,该数据存取模块进一步被配置为从该存储模块读出该多个数据集,以提供多个输出数据集,其中该多个输出数据集中的输出数据集包括该标量类型或该矢量类型的N个分量,并且在一个操作周期内提供该输出数据集。
6.根据权利要求5所述的处理多个数据集的装置,其特征在于,在两个连续操作周期内提供两个输出数据集,该两个输出数据集为该矢量类型和该矢量类型、该标量类型和该标量类型、该矢量类型和该标量类型、或该标量类型和该矢量类型。
7.根据权利要求5所述的处理多个数据集的装置,其特征在于,根据对应于该输出数据集和第一读映射信息和第二读映射信息中的一个的读数据索引,提供该输出数据集;其中当该输出数据集为该标量类型和该矢量类型中的一个时,采用该第一读映射信息,以及当该输出数据集为该标量类型和该矢量类型中的另一个时,采用该第二读映射信息。
8.根据权利要求7所述的处理多个数据集的装置,其特征在于,根据该第一读映射信息,将该数据集的分量从该存储模块的不同存储单元的相同条目中读出。
9.根据权利要求7所述的处理多个数据集的装置,其特征在于,根据该第二读映射信息,将该数据集的分量从该存储模块的不同存储单元的不同条目中读出。
10.根据权利要求7所述的处理多个数据集的装置,其特征在于,该第一读映射信息和该第二读映射信息中的每一个包括:
读地址移动信息,配置为根据该读数据索引存取N个存储单元中的每一个的一个条目,以提供已存取数据;以及
读数据移动信息,配置为根据该读数据索引移动该已存取数据,以提供该输出数据集。
11.根据权利要求1所述的处理多个数据集的装置,其特征在于,该数据存取模块在一个操作周期内将该数据集写入该存储模块。
12.根据权利要求11所述的处理多个数据集的装置,其特征在于,该操作周期为时钟周期。
13.一种处理多个数据集的方法,其特征在于,该多个数据集中的数据集包括N个分量,并且该数据集的数据类型为标量类型或矢量类型;其中N为正整数,该处理多个数据集的方法包括:
根据对应于该数据集和第一写映射信息和第二写映射信息中的一个的写数据索引,将该数据集写入存储模块;其中该存储模块包括配置为存储该多个数据集的N个存储单元,以及当该数据类型为该标量类型和该矢量类型中的一个时,采用该第一写映射信息,当该数据类型为该标量类型和该矢量类型中的另一个时,采用该第二写映射信息;
该第一写映射信息和该第二写映射信息中的每一个包括写数据移动信息和写地址移动信息。
14.根据权利要求13所述的处理多个数据集的方法,其特征在于,该第一写映射信息将该数据集的分量对应至该存储模块的不同存储单元的相同条目。
15.根据权利要求13所述的处理多个数据集的方法,其特征在于,该第二写映射信息将该数据集的分量对应至该存储模块的不同存储单元的不同条目。
16.根据权利要求13所述的处理多个数据集的方法,其特征在于:
写数据移动信息,配置为根据该写数据索引将该数据集的分量对应至该存储模块的不同存储单元;以及
写地址移动信息,配置为根据该写数据索引将该数据集的分量对应至该存储单元的多个条目中的一个。
17.根据权利要求13所述的处理多个数据集的方法,其特征在于,进一步包括:
从该存储模块中读出该多个数据集,以提供多个输出数据集,其中该多个输出数据集中的输出数据集包括该标量类型或该矢量类型的N个分量,该输出数据集在一个操作周期内提供。
18.根据权利要求17所述的处理多个数据集的方法,其特征在于,在两个连续的操作周期内提供两个输出数据集,该两个输出数据集为该矢量类型和该矢量类型、该标量类型和该标量类型、该矢量类型和该标量类型、或该标量类型和该矢量类型。
19.根据权利要求17所述的处理多个数据集的方法,其特征在于,根据对应于该输出数据集和第一读映射信息和第二读映射信息中的一个的读数据索引,提供该输出数据集;其中当输出数据集为该标量类型和该矢量类型中的一个时,采用该第一读映射信息,当该输出数据集为该标量类型和该矢量类型中的另一个时,采用该第二读映射信息。
20.根据权利要求19所述的处理多个数据集的方法,其特征在于,根据该第一读映射信息,将该数据集的分量从该存储模块的不同存储单元的相同条目中读出。
21.根据权利要求19所述的处理多个数据集的方法,其特征在于,根据该第二读映射信息,将该数据集的分量从该存储模块的不同存储单元的不同条目中读出。
22.根据权利要求19所述的处理多个数据集的方法,其特征在于,该第一读映射信息和该第二读映射信息中的每一个包括:
读地址移动信息,配置为根据该读数据索引存取该N个存储单元中的每一个的一个条目,以输出已存取数据;以及
读数据移动信息,配置为根据该读数据索引移动该已存取数据,以提供该输出数据集。
23.根据权利要求13所述的处理多个数据集的方法,其特征在于,该将数据集写入该存储模块的步骤在一个操作周期内执行。
24.根据权利要求23所述的处理多个数据集的方法,其特征在于,该操作周期为时钟周期。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/184,663 US9507601B2 (en) | 2014-02-19 | 2014-02-19 | Apparatus for mutual-transposition of scalar and vector data sets and related method |
US14/184,663 | 2014-02-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104850391A CN104850391A (zh) | 2015-08-19 |
CN104850391B true CN104850391B (zh) | 2018-05-18 |
Family
ID=50979505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410190866.3A Active CN104850391B (zh) | 2014-02-19 | 2014-05-07 | 处理多个数据集的装置及其方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9507601B2 (zh) |
EP (1) | EP2911052B1 (zh) |
CN (1) | CN104850391B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2558220B (en) * | 2016-12-22 | 2019-05-15 | Advanced Risc Mach Ltd | Vector generating instruction |
CN108984115B (zh) * | 2018-06-14 | 2020-07-28 | 北京理工大学 | 数据并行写入、读取方法、装置及系统 |
US11718249B2 (en) | 2019-01-25 | 2023-08-08 | Thor Tech, Inc. | Mobile device tools for smart vehicle features operation and automatic wireless routing selection and methods of use |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1952911A (zh) * | 2005-10-21 | 2007-04-25 | 英特尔公司 | 实现矢量存储器操作 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6081880A (en) | 1995-03-09 | 2000-06-27 | Lsi Logic Corporation | Processor having a scalable, uni/multi-dimensional, and virtually/physically addressed operand register file |
DE602007011755D1 (de) | 2006-05-16 | 2011-02-17 | Nxp Bv | Speicherarchitektur |
US7755631B1 (en) | 2006-10-24 | 2010-07-13 | Nvidia Corporation | Transposition structures and methods to accommodate parallel processing in a graphics processing unit (“GPU”) |
US8878860B2 (en) | 2006-12-28 | 2014-11-04 | Intel Corporation | Accessing memory using multi-tiling |
WO2010001433A1 (ja) * | 2008-06-30 | 2010-01-07 | 富士通マイクロエレクトロニクス株式会社 | メモリ装置及びそれを制御するメモリコントローラ |
JP4935961B2 (ja) * | 2009-04-14 | 2012-05-23 | 日本電気株式会社 | 画像識別子抽出装置 |
US20100332792A1 (en) * | 2009-06-30 | 2010-12-30 | Advanced Micro Devices, Inc. | Integrated Vector-Scalar Processor |
US9519947B2 (en) | 2009-09-25 | 2016-12-13 | Nvidia Corporation | Architecture and instructions for accessing multi-dimensional formatted surface memory |
US20120047344A1 (en) * | 2010-08-17 | 2012-02-23 | Sheaffer Gad S | Methods and apparatuses for re-ordering data |
-
2014
- 2014-02-19 US US14/184,663 patent/US9507601B2/en active Active
- 2014-05-07 CN CN201410190866.3A patent/CN104850391B/zh active Active
- 2014-05-15 EP EP14168429.0A patent/EP2911052B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1952911A (zh) * | 2005-10-21 | 2007-04-25 | 英特尔公司 | 实现矢量存储器操作 |
Also Published As
Publication number | Publication date |
---|---|
CN104850391A (zh) | 2015-08-19 |
EP2911052A1 (en) | 2015-08-26 |
US9507601B2 (en) | 2016-11-29 |
EP2911052B1 (en) | 2018-01-03 |
US20150234662A1 (en) | 2015-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105843775B (zh) | 片上数据划分读写方法、系统及其装置 | |
CN110383267A (zh) | 矩阵传输加速器系统和方法 | |
RU2006124547A (ru) | Замещение регистров обработки данных | |
US7979672B2 (en) | Multi-core processors for 3D array transposition by logically retrieving in-place physically transposed sub-array data | |
CN106302260B (zh) | 4个读端口4个写端口全共享报文的数据缓存处理方法及数据处理系统 | |
JP2005149492A (ja) | 行列ベクトル・レジスタ・アレイの二次元アドレッシング | |
CN104850391B (zh) | 处理多个数据集的装置及其方法 | |
US20190287582A1 (en) | Data processing method and data processing system for scalable multi-port memory | |
CN102652315A (zh) | 信息处理设备、其控制方法、程序及计算机可读存储媒体 | |
CN107622020A (zh) | 一种数据存储方法、访问方法及装置 | |
US7406563B1 (en) | Method and apparatus for accessing a striped configuration of disks | |
CN105550220B (zh) | 一种异构系统的取数的方法及装置 | |
CN110737870A (zh) | 一种用于在gpu上合并舒尔矩阵的方法及装置 | |
CN109614145A (zh) | 一种处理器核心结构及数据访存方法 | |
JP5917907B2 (ja) | 画像処理装置 | |
CN102156676B (zh) | 高速缓存系统 | |
US20160335028A1 (en) | Method and apparatus for processing data by using memory | |
US8671262B2 (en) | Single-port memory with addresses having a first portion identifying a first memory block and a second portion identifying a same rank in first, second, third, and fourth memory blocks | |
US9122570B2 (en) | Data pattern generation for I/O training and characterization | |
CN101937703B (zh) | 用于具有新型位单元实施的寄存器堆的装置 | |
CN109074654A (zh) | 连通域检测方法、电路、设备、计算机可读存储介质 | |
JP2007102940A (ja) | 試験装置、及び試験方法 | |
JP2013132003A (ja) | 画像処理装置 | |
JP2003108437A (ja) | メモリ内蔵データ処理装置 | |
CN102622318B (zh) | 一种存储器控制电路及其控制的向量数据寻址方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |