CN103777896B - 基于3d存储器的地址生成器 - Google Patents
基于3d存储器的地址生成器 Download PDFInfo
- Publication number
- CN103777896B CN103777896B CN201310469997.0A CN201310469997A CN103777896B CN 103777896 B CN103777896 B CN 103777896B CN 201310469997 A CN201310469997 A CN 201310469997A CN 103777896 B CN103777896 B CN 103777896B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- storage location
- buffer area
- storage
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L27/00—Modulated-carrier systems
- H04L27/26—Systems using multi-frequency codes
- H04L27/2601—Multicarrier modulation systems
- H04L27/2647—Arrangements specific to the receiver only
- H04L27/2649—Demodulators
- H04L27/265—Fourier transform demodulators, e.g. fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators
- H04L27/2651—Modification of fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators for performance improvement
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Discrete Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Image Generation (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及基于3D存储器的地址生成器。公开了用于在可变大小的快速傅里叶变换(FFT)架构中减少存储器使用并增加吞吐量的系统和方法。特别地,公开了3D对称虚拟存储器,从而利用可变大小FFT计算的内在结构。可以按照利用可变大小FFT计算中的内在结构的具体的坐标序列向3D对称虚拟存储器写入数据样本或从中读取数据样本。可以利用地址生成电路将3D对称虚拟存储器中的存储位置映射到1D缓冲区中的存储地址。
Description
技术领域
本发明涉及用于在可变大小快速傅里叶变换(FFT)架构中降低存储器使用并增加吞吐量的系统和方法。
背景技术
3GPP长期演进(LTE)是支持高速无线通信的无线通信标准。LTE是基于单载波频分复用(SC-FDM)和正交频分复用(OFDM)两种算法的通信标准,这两种算法大量使用FFT,例如可变大小的离散傅里叶变换(DFT)或离散傅里叶逆变换(IDFT)。
FFT计算包括读取带有数据样本x[n],n=0,…,N-1(其中N是输入数据序列的长度)的输入数据序列,并输出带有数据样本X[k],k=0,…,N-1的频域FFT数据序列。通常将这样的计算称为N点FFT。FFT算法使用分治法来降低计算FFT的计算复杂度。例如,库利-图基(Cooley-Tukey)算法在每个中间级(pass)将计算FFT的问题递归地分解为一半大小(即,N/2)的子问题。FFT分解的大小被称为基数。在以上示例中,基数为2。假如N是k的幂,则这种分解方法通常对任意基数k适用。因此,计算FFT一般包括在输入数据序列上形成数个级(也称为阶段)并形成中间结果。通常,每一级可以与不同的基数相关联。
LTE标准一般使用基数R=2、3、4或5的FFT算法。作为示例,考虑使用基数R=4的64点FFT的计算。为计算FFT,FFT处理器通常按顺序处理输入数据序列,其中与数据样本对应的索引按照如下顺序排列:
00,16,32,48,01,17,33,49,02,18,34,50,03,19,35,51,04,20,36,52,...,15,31,47,63。
数据样本的这个顺序被称为反基数顺序(radix-reversed order)。在FFT计算的第一级,利用对应于索引00,16,32和48的数据样本来计算第一个基数-4蝶形;利用对应于索引01,17,33和49的数据样本来计算下一个基数-4蝶形,以此类推。FFT蝶形是FFT计算的一部分,其将较大的FFT计算分解成较小的子变换计算。
已经注意到,可变大小的DFT/IDFT实现通常需要很高的存储器使用并且会遭遇吞吐量低的问题。因此,拥有能够有效执行DFT/IDFT计算的架构是有益的。如果没有用于执行这样的计算的有效架构,则DFT/IDFT计算可能会成为阻碍基于LTE的通信方案最优运行的瓶颈。
一些当前的可变大小的DFT/IDFT实现使用双处理内核,以便满足LTE的吞吐量需求。此外,一些当前的可变大小的DFT/IDFT实现使用双重双端口存储器来满足存储器使用需求。例如,一些可变大小的DFT/IDFT实现使用包含两个单独的存储阵列的乒乓缓冲区(ping-pong buffer),这两个单独的存储阵列按照允许并行进行数据的读取和写入的配置布置。具体地,每个存储阵列可以具有独立的数据总线,在第一时间段内,该数据总线可以使数据能够写入第一存储阵列中,同时从第二存储阵列中读取数据。在第二时间段内,可以从第一存储阵列中读取数据,同时将数据写入第二存储阵列中。在后续的时间段内,可以按照上述方式对每个存储阵列交替进行数据的读取和写入。
然而,利用乒乓缓冲区以增加存储器需求为代价,即,需要比使用单个存储阵列更多的存储器。因此,期望的是拥有一种在不增加存储器需求的情况下有效执行可变大小的FFT的方法和系统。
发明内容
为解决本技术领域内的以上不足和其它不足,本发明提供用于在可变大小的快速傅里叶变换(FFT)架构中减少存储器使用并增加吞吐量的方法和系统。
在实施例中,所述系统包含可操作来存储数据样本的缓冲区,该数据样本可以被操作来计算FFT。缓冲区中的存储位置可以被映射至3D对称虚拟存储器中,该3D对称虚拟存储器可操作来利用可变长度FFT计算中内在的结构。系统可以包含可操作来将3D对称虚拟存储器中的存储地址映射至缓冲区的地址生成器电路。
在实施例中,系统可以包含可操作来计算固定长度FFT的固定长度流处理引擎、可操作来计算可变长度FFT的可变长度处理引擎,以及用于存储FFT计算的初始结果、中间结果和/或最终结果的缓冲区。该缓冲区可以被抽象为3D对称虚拟存储器。
在实施例中,可以按照具体的坐标序列向3D对称虚拟存储器写入数据样本或从其中读取数据样本。例如,可以首先沿Y坐标开始向3D对称虚拟存储器写入数据样本,随后分别沿X坐标和Z坐标写入数据样本。然后,可以按照相同的坐标序列从3D对称虚拟存储器中读取数据样本。此外,当3D对称虚拟存储器的特定存储片(slice)被释放时,即数据样本从中被读取时,其它数据样本可以被写入释放的存储片中。可以向3D对称虚拟存储器写入数据样本的坐标序列可以是首先沿X坐标,随后分别沿Z坐标和Y坐标。然后,可以按照相同的坐标序列从3D对称虚拟存储器读取数据样本。
接下来,可以首先沿Z坐标向3D对称虚拟存储器写入数据样本,随后分别沿Y坐标和X坐标写入数据样本。然后,可以按照相同的坐标顺序从3D对称虚拟存储器读取数据样本。然后,从首先沿Y坐标写入数据样本且随后分别沿X坐标和Z坐标写入数据样本的坐标顺序开始,向3D对称虚拟存储器写入数据样本或从其中读取数据样本的顺序可以被重复。
在实施例中,地址生成器电路可操作来将3D对称虚拟存储器中的存储位置的索引转换为缓冲区中的存储地址。地址生成器电路可以包括循环计数器和可操作来帮助将3D对称虚拟存储器中的存储位置转换为缓冲区中的存储地址的额外电路。在状态机的控制下,地址生成器电路可以被动态地重新配置,从而基于从3D对称虚拟存储器读取数据样本或向其写入数据样本的坐标序列计算缓冲区中的存储地址。
附图说明
在考虑了下列与附图结合的详细描述后,本发明的进一步的特征、实质和各种优势将变得明显,在这些附图中,类似的参考符号指代类似的零件,并且其中:
图1是根据说明性实施例的高效FFT计算架构的简化框图;
图2是根据说明性实施例的双端口存储器的简化框图;
图3A和图3B是根据说明性实施例的3D存储器的简化框图;
图4A、图4B和图4C是根据说明性实施例示出可以从3D存储器中读取数据或向其写入数据所采用的方式的简化框图;
图5A、图5B和图5C是根据说明性实施例示出可以从3D存储器中读取数据或向其写入数据所采用的方式的简化表格;
图6是根据说明性实施例的可以用来为缓冲区生成地址的地址器(addressor)电路的简化框图;
图7是根据说明性实施例的可以用来利用反压力(backpressure)为缓冲区生成地址的地址器电路的简化框图;以及
图8说明包含在这里被描述为在数据处理系统之内的电路的实施例的电路或其它器件。
具体实施方式
为提供对本发明的全面理解,现在将描述某些说明性实施例。然而,本领域技术人员将理解,可以对这里所描述的系统和方法调整和修改以适合所针对的应用,可以在其它合适的应用中采用这里所描述的系统和方法,这些其它附加和修改将不脱离本发明的范围。
图1是根据说明性实施例的高效FFT计算架构的简化框图。在一些实施例中,FFT计算架构的至少一些组件可以位于集成电路、专用集成电路(ASIC)、专用标准产品(ASSP)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、全定制芯片或专用芯片上。也应当理解,FFT计算架构可以位于器件的组合(例如FPGA和ASIC)上,并且/或者其可以包含额外的独立的电路组件。
FFT计算架构可以包括固定长度流处理引擎110、存储器120以及可变长度处理引擎130。固定长度流处理引擎110可操作来经由总线102以符号反转顺序接收流输入。固定长度流引擎110可以经由线路104连接至存储器120。存储器120可以经由总线131和总线132连接至可变长度处理引擎130。存储器120可操作来经由总线106输出数据。以下结合图2更详细地描述存储器120。
固定长度流处理引擎110可以是可操作来执行固定长度FFT计算的电路,对于其FFT正在被计算的数据帧来说,固定长度FFT计算具有恒定大小的点。固定长度流处理引擎110可以包含多个蝶形电路和移位寄存器(未示出)。在一些实现中,固定长度流处理引擎110可以利用总线104将固定长度FFT计算的中间计算值和/或结果存储在存储器120中。
可变长度处理引擎130可以是可操作来执行可变长度FFT计算的电路,在可变长度FFT计算中,用于FFT计算的不同帧的大小是可变的(一般是公共基数集的元素的倍数)。在一些实现中,可以存在并行工作的多个可变长度处理引擎(未示出)。可变长度处理引擎130可以利用总线131和总线132将可变长度FFT计算的中间计算值和/或结果存储在存储器120中。在一些实现中,固定长度流处理引擎110和可变长度处理引擎130能够在不同的时钟频率下工作。
图2是根据说明性实施例的双端口存储器的简化框图。在一些实现中,存储器120可以是1D存储阵列。存储器120可操作来经由总线210和总线220从固定长度流处理引擎110接收数据。总线210和总线220可以是图1的总线104的一部分。总线210可操作来将固定长度流处理引擎110期望向其写入数据的存储位置的地址从固定长度流处理引擎110传输至存储器120。总线220可操作来将固定长度流处理引擎110期望写入存储器120中的数据从固定长度的流处理引擎110传输至存储器120。
存储器120可以经由总线230、240、250和260连接至可变长度处理引擎130。总线230和240、总线250和260可以分别是图1的总线131和132的一部分。可变长度处理引擎130可以利用总线230和240来从存储器120中读取数据。更具体地,总线240可操作来将可变长度处理引擎130期望从其中读取数据的存储位置的地址从可变长度处理引擎130传输至存储器120。总线230可操作来将数据从可变长度处理引擎130指定的存储位置经由总线240传输至可变长度处理引擎130。
可变长度处理引擎130可以利用总线250和260来将数据写入存储器120中。更具体地,总线250可操作来将可变长度处理引擎130期望向其写入数据的存储位置的地址从可变长度处理引擎130传输至存储器120。总线260可操作来将可变长度处理引擎130期望写入存储器120中的数据从可变长度处理引擎130传输至存储器120。
如以上所讨论的,总线230、240、250和260可以为可变长度处理引擎130提供同时从存储器120读取数据和向其写入数据的能力。在一些实现中,存储器120可以使用减少的端口来读取和写入数据,并且存储器120可以与外部逻辑共享。例如,存储器120可以结合外部逻辑使用单个端口。在一些实现中,准备/忙碌信号(未示出)可以被用来应答(acknowledge)位于存储器120之前或之后的模块,以确定是继续从存储器120中读取数据或向其写入数据,还是暂时停止从存储器120中读取数据或向其写入数据。
图3A和图3B是根据说明性实施例的3D存储器的简化框图。具体地,图1和图2的存储器120可以被抽象地表示为图3A和图3B中所示出的3D存储器形式。图3A示出图1的存储器120可以被表示为3D立方体300的示例性实施例。立方体300可以是对称的。立方体300的三个轴线可以由轴线X310、Y320和Z330表示。立方体300可以仅是存储器120的抽象表示,即,在架构实现中,可以不按照立方体300那样构造存储器120。
图3B示出图3A的立方体300的剖视图,其说明可以配置立方体300的内部结构的方式。图3B示出沿轴线X310剖视的立方体300的表示。例如,立方体300可以包括剖切片340、350、360和370。每个剖切片340、350、360和370都可以是包含存储位置380的平面存储结构。在一些实现中,片340、350、360和370可以紧邻彼此而堆叠。立方体300可以包括类似于片340、350、360和370的额外片(未示出)。每个存储位置380都能够存储数据样本。在一些实现中,每个数据样本可以是子载波样本。
图3B示出在一些实现中,每个片340、350、360和370能够存储12x12个数据样本。例如,如图3B所示,在每一维中,可以用0:11编索引每个片340、350、360和370中的存储位置。因此,可以用向量坐标符号来编索引立方体300中的存储位置,以便于表示。例如,可以用符号(0,0,0)来表示坐标(X=0,Y=0,Z=0)处的存储位置。例如,可以用符号(0,11,0)来表示坐标(X=0,Y=11,Z=0)处的存储位置。由此可以利用上述符号来表示立方体300中的一系列存储位置。例如,可以用(0,0,0),(1,0,0),(2,0,0),...(11,0,0)或等同地用[X=0:11,Y=0,Z=0]表示沿片340的列390的一系列存储位置。例如,可以用(0,0,0),(0,1,0),(0,2,0),...(0,11,0)或等同地用[X=0,Y=0:11,Z=0]表示沿片340的第一行的一系列存储位置。
由于立方体300是存储器120的表示,因此立方体300中的每个存储位置可以对应存储器120中的一个存储地址。例如,存储位置(0,0,0)可以对应存储器120中的特定存储地址。图3B所示的片340、350、360和370的大小仅是说明性的,并且在一些实现中,可以使用能够存储额外的或更少的数据样本的存储片。
图4A、图4B和图4C是根据说明性实施例示出可以从3D存储器中读取数据或向其写入数据所采用的方式的简化框图。图4A示出立方体400,其为图1的存储器120的表示。立方体400可以基本上与图3A的立方体300相同。立方体400的三个轴线可以用轴线X410、Y420和Z430表示。作为示例,图4A、图4B和图4C示出在FFT计算期间,当可变长度处理引擎130使用基数R=12时,可以如何从立方体400中读取数据并向其写入数据。在LTE标准所需的FFT计算中经常使用基数R=12。然而,也可以使用其它值的基数。
图4A示出可变长度处理引擎130最初可以向存储块440写入数据。存储块440可以对应下列公式表示的一组存储位置:
[X=0,Y=0:11,Z=0], (1)
[X=1,Y=0:11,Z=0],
·
·
·
[X=11,Y=0:11,Z=0]。
存储块440可以基本上类似于图3B的片340。而且,公式(1)可以指示向存储块440中的存储位置写入数据的顺序。例如,可以将第一个数据样本写入存储位置(0,0,0)中,可以将第二个数据样本写入存储位置(0,1,0)中,并且可以将第十二个数据样本写入存储位置(0,11,0)中。也就是说,可以将前十二个数据样本写入存储位置[X=0,Y=0:11,Z=0]中。可以从存储位置(1,0,0)开始将接下来的十二个数据样本写入存储位置[X=1,Y=0:11,Z=0]中,以此类推。可以将数据样本132到144写入存储位置[X=11,Y=0:11,Z=0]中。
随后,可以以类似于以上结合存储块440所描述的方式将数据写入与图3B的片350对应的存储块中,如下列公式表示的存储位置所指示的:
[X=0,Y=0:11,Z=1], (2)
[X=1,Y=0:11,Z=1],
·
·
·
[X=11,Y=0:11,Z=1]。
随后,可以将数据写入由[X=0,Y=0:11,Z=2],[X=1,Y=0:11,Z=2],...,[X=11,Y=0:11,Z=2]所指示的存储位置中,以此类推。以该方式继续进行,最后可以将数据写入下列公式表示的存储位置中:
[X=0,Y=0:11,Z=11], (3)
[X=1,Y=0:11,Z=11],
·
·
·
[X=11,Y=0:11,Z=11]。
公式(1)-(3)指示可以向立方体400中的存储位置写入数据的顺序。立方体400中的所有存储位置不必都填充有数据,因为向存储器120(由立方体400表示)写入数据的可变长度处理引擎130可以计算可变长度FFT。写入由公式(1)-(3)所表示的存储位置中的数据可以对应于可能需要计算其IDFT的子载波样本。按照公式(1)-(3)所指定的顺序向立方体400写入数据用符号Y-X-Z表示,即首先沿轴线Y420写入数据,随后沿轴线X410写入数据,最后沿轴线Z430写入数据。
图4B示出可以从立方体400中读取数据所采用的方式的说明性示例。以此方式进行的数据读取可以对应于读取数据以便执行可变长度处理引擎130所计算的IDFT的第二阶段的计算。
图4B示出可变长度处理引擎130最初可以从存储块450中读取数据。存储块450可以对应于下列公式所表示的一组存储位置:
[X=0:11,Y=0,Z=0], (4)
[X=0:11,Y=0,Z=1],
·
·
·
[X=0:11,Y=0,Z=11]。
公式(4)可以指示从存储块450的存储位置中读取数据的顺序。例如,可以从存储位置(0,0,0)中读取第一个数据样本,可以从存储位置(1,0,0)中读取第二个数据样本,并且可以从存储位置(11,0,0)中读取第十二个数据样本。也就是说,可以从存储位置[X=0:11,Y=0,Z=0]中读取前十二个数据样本。可以从存储位置(0,0,1)开始从存储位置[X=0:11,Y=0,Z=1]中读取接下来的十二个数据样本,以此类推。可以从存储位置[X=0:11,Y=0,Z=11]中读取数据样本132到144。
随后,可以从下列公式表示的存储位置中读取数据:
[X=0:11,Y=1,Z=0], (5)
[X=0:11,Y=1,Z=1],
·
·
·
[X=0:11,Y=1,Z=11]。
更进一步,可以从下列公式表示的存储位置中读取数据:
[X=0:11,Y=11,Z=0], (6)
[X=0:11,Y=11,Z=1],
·
·
·
[X=0:11,Y=11,Z=11]。
按照公式(4)-(6)所指定的顺序从立方体400中读取数据可以用符号X-Z-Y表示,即首先沿轴线X410读取数据,随后沿轴线Z430读取数据,最后沿轴线Y420读取数据。
一旦从存储块450中读取了数据,则存储块450可以被释放或清空,即存储块450中的存储位置可以被用来存储其它数据。以下结合图7进一步描述释放存储块(或片)的过程。
特别地,如以下结合图5A、图5B和图5C更加详细地解释的那样,一旦存储块450中的存储位置被释放,则这些存储位置可以被用来存储其它数据。具体地,使用立方体400的存储位置来存储数据的顺序可以与结合图4B所描述的从立方体400的存储位置中读取数据的顺序相同。例如,可以按照顺序X-Z-Y向立方体400写入数据,即首先沿轴线X410写入数据,随后沿轴线Z430写入数据,最后沿轴线Y420写入数据。
也就是说,可以将数据写入下列公式表示的一组存储位置中:
[X=0:11,Y=0,Z=0], (7)
[X=0:11,Y=0,Z=1],
·
·
·
[X=0:11,Y=0,Z=11]。
例如,可以将第一个数据样本写入存储位置(0,0,0)中,将第二个数据样本写入存储位置(1,0,0)中,并且将第十二个数据样本写入存储位置(11,0,0)中。也就是说,可以将前十二个数据样本写入存储位置[X=0:11,Y=0,Z=0]中。可以从存储位置(0,0,1)开始将接下来的十二个数据样本写入存储位置[X=0:11,Y=0,Z=1]中,以此类推。可以将数据样本132到144写入存储位置[X=0:11,Y=0,Z=11]中。
随后,可以将数据写入下列公式表示的存储位置中:
[X=0:11,Y=1,Z=0], (8)
[X=0:11,Y=1,Z=1],
·
·
·
[X=0:11,Y=1,Z=11]。
更进一步,可以将数据写入下列公式表示的存储位置中:
[X=0:11,Y=11,Z=0], (9)
[X=0:11,Y=11,Z=1],
·
·
·
[X=0:11,Y=11,Z=11].
图4C示出可以从立方体400中读取数据所采用的方式的说明性示例。以此方式进行的数据读取可以对应于读取数据以便执行可变长度处理引擎130计算的IDFT的第三阶段的计算。
图4C示出可变长度处理引擎130最初可以从存储块460中读取数据。存储块460可以对应于下列公式所表示的一组存储位置:
[X=0,Y=0,Z=0:11], (10)
[X=0,Y=1,Z=0:11],
·
·
·
[X=0,Y=11,Z=0:11]。
公式(10)可以指示从存储块460的存储位置中读取数据的顺序。例如,可以从存储位置(0,0,0)中读取第一个数据样本,可以从存储位置(0,0,1)中读取第二个数据样本,并且可以从存储位置(0,0,11)中读取第十二个数据样本。也就是说,可以从存储位置[X=0,Y=0,Z=0:11]中读取前十二个数据样本。可以从存储位置(0,1,0)开始从存储位置[X=0,Y=1,Z=0:11]中读取接下来的十二个数据样本,以此类推。可以从存储位置[X=0,Y=11,Z=0:11]中读取数据样本132到144。
随后,可以从下列公式表示的存储位置中读取数据:
[X=1,Y=0,Z=0:11], (11)
[X=1,Y=1,Z=0:11],
·
·
·
[X=1,Y=11,Z=0:11]。
更进一步,可以从下列公式表示的存储位置中读取数据:
[X=11,Y=0,Z=0:11], (12)
[X=11,Y=1,Z=0:11],
·
·
·
[X=11,Y=11,Z=0:11]。
按照公式(10)-(12)所指定的顺序从立方体400中读取数据用符号Z-Y-X来表示,即首先沿轴线Z430读取数据,随后沿轴线Y420读取数据,最后沿轴线X410读取数据。
一旦存储块460中的存储位置被释放,则这些存储位置可以被用来存储其它数据。具体地,使用立方体400的存储位置来存储数据的顺序可以与结合图4C所描述的从立方体400的存储位置中读取数据的顺序相同。例如,可以按照顺序Z-Y-X向立方体400写入数据,即首先沿轴线Z430写入数据,随后沿轴线Y420写入数据,最后沿轴线X410写入数据。
随后,可以按照Y-X-Z指定的顺序从图4A所示的存储块440中读取数据,即首先沿轴线Y420读取数据,随后沿轴线X410读取数据,最后沿轴线Z430读取数据。存储块440可以对应于下列公式表示的一组存储位置:
[X=0,Y=0:11,Z=0],
[X=1,Y=0:11,Z=0],
·
·
·
[X=11,Y=0:11,Z=0]。
下面在图5A、图5B和图5C中通过示例的方式进一步详述了以上结合图4A、图4B和图4C所讨论的从立方体400中读取数据或向其写入数据的过程。
图5A、图5B和图5C是根据说明性实施例示出可以从3D存储器中读取数据或向其写入数据所采用的方式的简化表格。作为示例,图5A、图5B和图5C示出在FFT计算期间,当可变长度处理引擎130使用基数R=12时,可以如何从图4A的立方体400中读取数据或向其写入数据。也可以使用其它值的基数。
图5A示出数据样本索引的表格510和520。在说明性示例中,可变长度处理引擎130可以计算可变长度的FFT,其中初始数据帧的帧长可以是12x24=288个数据样本。在第一阶段,可变长度处理引擎130可以将对应于初始帧的数据样本写入存储器120中。表格510列出序列中的数据样本的索引,其中数据样本可以按照该序列被存储在表示存储器120的图4A的立方体400中。以下结合图6和图7描述立方体400中的存储位置到存储器120中的存储位置的映射以及后续的对应于存储器120中的存储位置的地址的生成。
表格510列出了序列中数据样本的索引,其中数据样本可以按照该序列被存储在图4A的立方体400中。具体地,可变长度处理引擎130可以按照与结合图4A所指定的相同的序列向立方体400写入数据样本。具体地,可变长度处理引擎130可以将第一个数据样本写入存储位置(0,0,0)中,将第二个数据样本写入存储位置(0,1,0)中,并且将第十二个数据样本写入存储位置(0,11,0)中。也就是说,可以将在表格510中被指示为数据样本512的前十二个数据样本写入存储位置[X=0,Y=0:11,Z=0]中。可以从存储位置(1,0,0)开始将接下来的十二个数据样本写入存储位置[X=1,Y=0:11,Z=0]中,以此类推。可以将数据样本132到144写入存储位置[X=11,Y=0:11,Z=0]中。这个顺序表示为:
[X=0,Y=0:11,Z=0],[X=1,Y=0:11,Z=0],...,[X=11,Y=0:11,Z=0]。
随后,可以将数据写入由[X=0,Y=0:11,Z=1],[X=1,Y=0:11,Z=1],...,[X=11,Y=0:11,Z=1]表示的存储位置中,接下来将数据写入由[X=0,Y=0:11,Z=2],[X=1,Y=0:11,Z=2],...,[X=11,Y=0:11,Z=2]表示的存储位置中,以此类推。按照以上所指定的顺序向立方体400中写入数据可以用符号Y-X-Z表示,即首先沿轴线Y420写入数据,然后沿轴线X410写入数据,最后沿轴线Z430写入数据。
在FFT计算的第二阶段,可变长度处理引擎130可以从存储器120中读取对应于初始帧的数据样本。表格520列出了序列中数据样本的索引,其中数据样本可以按照该序列从图4A的立方体400中读取。特别地,可变长度处理引擎130可以按照与结合图4B所指定的相同的序列从立方体400中读取数据。
具体地,可变长度处理引擎130可以从存储位置(0,0,0)中读取第一个数据样本,从存储位置(1,0,0)中读取第二个数据样本,并从存储位置(11,0,0)中读取第十二个数据样本。也就是说,可以从存储位置[X=0:11,Y=0,Z=0]中读取前十二个数据样本。此外,如表格520所示,按照这种序列从立方体400中读取数据样本相当于读取索引为0,12,24,36,48,60,72,84,96,108,120和132的数据样本。数据样本索引的这个序列在文献中被称为反基数序列,并且在FFT计算的第二阶段,可变长度处理引擎130可以按照该序列处理数据样本。因此,有利的是,读取数据样本的立方体400的存储位置的序列可以使得按照可变长度处理引擎130处理数据样本的顺序读取数据样本。
可以从存储位置(0,0,1)开始从存储位置[X=0:11,Y=0,Z=1]中读取接下来的十二个数据样本,以此类推。随后,可以从[X=0:11,Y=1,Z=0],[X=0:11,Y=1,Z=1],...,[X=0:11,Y=1,Z=11]表示的存储位置读取数据。更进一步,可以从[X=0:11,Y=11,Z=0],[X=0:11,Y=11,Z=1],...,[X=0:11,Y=11,Z=11]表示的存储位置中读取数据。按照上述指定的顺序从立方体400中读取数据用符号X-Z-Y来表示,即首先沿轴线X410读取数据,然后沿轴线Z430读取数据,最后沿轴线Y420读取数据。
可变长度处理引擎130可以按照上述指定的序列从立方体400中读取数据样本,直到可变长度处理引擎130读取到索引为278的数据样本。在表格520中,用序列522来表示索引为0,12,24,...,254,266,278的数据样本序列。一旦可变长度数据处理引擎130读取了序列522中的数据样本,则存储这些读取的数据样本的存储位置被释放。然后,所释放的存储位置可以被立方体400用来存储其它数据,如以下结合图5B所描述那样。
继续之前的示例,可变长度处理引擎130可以计算可变长度的FFT,其中初始数据帧的帧长可以是12x36=432个数据样本。在第一阶段,可变长度处理引擎130可以将对应于初始帧的数据样本写入存储器120中。
图5B示出数据样本索引的表格530和540。表格530列出了序列中数据样本的索引,其中数据样本可以按照该序列被存储在图4A的立方体400中。使用立方体400的存储位置来存储数据的顺序可以与结合图5A的表格520所描述的从立方体400的存储位置中读取数据的顺序相同。例如,可以按照顺序X-Z-Y向立方体400写入数据,即首先沿轴线X410写入数据,随后沿轴线Z430写入数据,最后沿轴线Y420写入数据。在完成这三个写入阶段之后,存储器(即立方体400)的状态返回到以上结合图5A所描述的第一阶段。
图6是根据说明性实施例的可以用来为缓冲区生成地址的地址器电路的简化框图。系统600包括加法器620和630、计数器642、644和646、交换机610以及移位寄存器652、654、656和658。引线602可以将存储器地址输出至图2的总线210、230或250。在一些实现中,时钟612可以是外部的33MHz时钟信号,但是时钟612也可以是运行在其它频率下的时钟信号。时钟612可操作来为系统600的所有组件提供时钟。
每个计数器642、644和646都可以与图3A的立方体300的坐标X、Y或Z中的一个相关联。例如,如图6所示,计数器642、644和646可以分别与坐标Y、X和Z相关联。在立方体300可操作来存储12x12x12=1728个数据样本的说明性示例中,可以沿立方体300的每个维X、Y和Z存储12个数据样本。因此,如图3B所示,可以用0,1,...,11编索引沿立方体300中的每一维的存储位置,并且用坐标(X,Y,Z)表示立方体300中的每个存储位置,其中X、Y和Z各自从索引值0进行到索引值11。继续该示例,系统600可以被配置为计算公式12(12Z+X)+Y、12(12X+Y)+Z或12(12Y+Z)+X中的任一个,并经由引线602输出计算结果。在引线602上输出的值可以对应于缓冲区中的存储地址。因此,系统600可以将立方体300中的存储位置映射到缓冲区中的存储地址。以此方式,系统600可操作来生成缓冲区中的读取和写入两种存储地址。
计数器642、644和646可以是循环计数器,每个计数器可操作来在其各自的输出端(计数器642的输出端Y、计数器644的输出端X和计数器646的输出端Z)上输出介于0和11之间的值。计数器642、644和646都可以具有初始和/或默认的内部值0。计数器642、644和646可以分别输出溢出信号O1、O2和O3。溢出信号O1可以是二进制值的信号,当计数器642在其输出端Y上输出从0到11的值时,溢出信号O1具有逻辑低值。一旦计数器642在其输出端Y上输出值11,则计数器642可以将其内部计数重置为值0,同时为溢出信号O1输出逻辑高值。溢出信号O2和O3分别对应于计数器644和646,其可以表现出与溢出信号O1相似的行为。溢出信号O1、O2和O3的初始和/或默认值可以是逻辑低值。每个计数器642、644和646可以耦合至交换机610,并且溢出信号O1、O2和O3可以作为输入x2、x3和x4分别被交换机610接收。计数器642、644和646可以分别从交换机610中接收输入信号C1、C2和C3。
交换机610可以耦合至时钟612及计数器642、644和646中的每一个。交换机610可以分别向计数器642、644和646输出信号u1、u2和u3。计数器642、644和646可以分别从交换机610接收信号u1、u2和u3,作为输入C1、C2和C3。交换机610可以被配置为将其作为输入所接收的任何信号(即时钟612、x2、x3和x4)连接至其输出的任意信号(即u1、u2和u3)。例如,交换机610最初可以被配置为将时钟612连接至输出端u1(被传输至计数器642)、将输入端x2连接至输出端u2(被传输至计数器644)以及将输入端x3连接至输出端u3(被传输至计数器646)。
因此,在系统600上电之后时钟612切换的第一个时隙中,交换机610可以经由输出端u1将时钟612馈送至计数器642。响应于接收到时钟切换,计数器642可以将其内部值从0递增至1,并在其输出端Y上输出值1。在第一个时隙中,计数器642的溢出信号O1和计数器644的溢出信号O2的值可以是逻辑低值,并且因此,计数器644和646可以在其各自的输入端C2和C3上接收逻辑低值。因此,在第一个时隙中,计数器644和646的内部状态会保持为0。
在后续的时隙中,交换机610可以继续将时钟612馈送至计数器642,并且计数器642可以在时钟612切换的每个时隙中将其内部状态递增单位值,并且可以在其输出端Y上输出内部状态值。在计数器642的内部状态达到值11之前,计数器642可以继续在溢出信号O1上输出逻辑低值。一旦计数器642的内部状态达到值11,计数器642可以将其内部状态翻转为值0并切换溢出信号O1的值。
当交换机610在其输入端x2上接收到来自计数器642的切换时,交换机610可以经由输出端u2将该切换馈送至计数器644的输入端C2。因此,计数器644可以将其内部状态递增单位值至值1,并且可以在计数器644的输出端X上输出其内部状态值。因为计数器644的内部状态还没有达到值11,因此计数器644的溢出信号O2的值会是逻辑低值,并且因此计数器646会在输入端C3处接收逻辑低值。在该时隙中,因为计数器646没有在输入端C3上接收到切换值,因此计数器646的内部状态会保持为0。
在接下来的11个时隙中,交换机610可以继续将时钟612馈送至计数器642,并且计数器642可以在时钟612切换的每个时隙中将其内部状态递增单位值,并可以在计数器642的输出端Y上输出内部状态的值。在这些时隙中,计数器644可以在计数器644的输出端X上输出其内部状态的值(即,1)。计数器646可以在其输出端Z上输出其内部状态的值(即,0)。当计数器642的内部状态达到值11时,计数器642可以将其内部状态翻转为值0,并切换溢出信号O1的值。因此,计数器644可以在输入端C2上接收到切换,因此可以将其内部状态递增单位值至值2,并且可以在计数器644的输出端X上输出其内部状态值。
可以重复以上所描述的过程,使得计数器642在计数器642的输出端Y上输出的值、计数器644在计数器644的输出端X上输出的值以及计数器646在计数器646的输出端Z上输出的值如下列表1所示。
时隙 | 1 | 2 | ... | 12 | 13 | 14 | ... | 24 | ... | 132 | 133 | ... | 144 |
Y | 0 | 1 | ... | 11 | 0 | 1 | ... | 11 | ... | 0 | 1 | ... | 11 |
X | 0 | 0 | ... | 0 | 1 | 1 | ... | 1 | ... | 11 | 11 | ... | 11 |
Z | 0 | 0 | ... | 0 | 0 | 0 | ... | 0 | ... | 0 | 0 | ... | 0 |
表1
在第144个时隙之后,当计数器642的内部状态已经达到值11时(如表1所示),计数器642会将其内部状态翻转为值0并切换溢出信号O1的值。此外,计数器644的内部状态已经达到值11,计数器644会将其内部状态翻转为0。计数器644还会切换溢出信号O2的值,该溢出信号O2可以在输入端x3处被交换机610接收。
当交换机610在输入端x3上接收到来自计数器644的切换时,交换机610可以经由输出端u3将该切换馈送至计数器646的输入端C3。因此,计数器646可以将其内部状态递增单位值至值1,并且可以在计数器646的输出端Z上输出其内部状态值。可以重复以上所描述的过程,使得计数器642在计数器642的输出端Y上输出的值、计数器644在计数器644的输出端X上输出的值以及计数器646在计数器646的输出端Z上输出的值如下列表2所示。
时隙 | 1 | ... | 144 | 145 | ... | 288 | 289 | ... | 432 | ... | 1728 |
Y | 0 | ... | 11 | 0 | ... | 11 | 0 | ... | 11 | ... | 11 |
X | 0 | ... | 11 | 0 | ... | 11 | 0 | ... | 11 | ... | 11 |
Z | 0 | ... | 0 | 1 | ... | 1 | 2 | ... | 2 | ... | 11 |
表2
以上示例只是说明性的,其描述了立方体300可操作来存储12x12x12=1728个数据样本的情况。立方体300可操作来存储比1728个数据样本更多或更少的数据样本,并且表格1和表格2中的索引的值可以相应地变化。
移位寄存器656和658可操作来分别将其各自的输入左移3位和2位。对输入进行左移操作可以相当于乘以输入,例如,将输入值左移3位可以相当于输入值乘以8,而将输入值左移两位相当于输入值乘以4。
在图6所示的说明性实施例中,系统600可以被配置为计算公式12(12Z+X)+Y。因此,移位寄存器656和658两者都可以从计数器646接收输出Z并分别将Z移3位和2位。移位寄存器656和658可以连接至加法器630。加法器630可以分别从移位寄存器656和658接收来自计数器646的已经被左移3位(即乘以8)的输出Z和来自计数器646的已经被左移2位(即乘以4)的输出Z。加法器630还可以从计数器644接收输出X。加法器630可以基于其接收的输入计算12Z+X。加法器630可以将计算的12Z+X的值输出至移位寄存器652和654。
移位寄存器652和654可以分别基本上类似于移位寄存器656和658。因此,移位寄存器652和654两者都可以从加法器630接收输出12Z+X,并分别将12Z+X移3位和2位。移位寄存器652和654可以连接至加法器620。加法器620可以分别从移位寄存器652和654接收被左移3位(即,乘以8)的12Z+X和被左移2位的12Z+X(即,乘以4)。加法器620还可以从计数器642接收输出Y。加法器620可以基于其接收的输入计算12(12Z+X)+Y。加法器620可以将计算的12(12Z+X)+Y的值经由引线602输出。
以上示例只是说明性的,并且其描述了系统600被配置为计算公式12(12Z+X)+Y的情况。在其它实施例中,系统600可以被配置为计算公式12(12X+Y)+Z或12(12Y+Z)+X。当系统600可以被配置为计算公式12(12Z+X)+Y、12(12X+Y)+Z或12(12Y+Z)+X时,交换机610可以动态地重新配置其内部连接。
在一些实现中,图6的系统600可以包括可操作来控制交换机610的重新配置的状态机(未示出)。例如,状态机可以控制系统600计算公式12(12Z+X)+Y、12(12X+Y)+Z或12(12Y+Z)+X中的哪一个。如以上结合图4A、图4B和图4C所讨论的,可以按照顺序Y-X-Z、X-Z-Y或Z-Y-X从立方体300的存储位置中读取数据或向其写入数据。当按照顺序Y-X-Z从立方体300的存储位置中读取数据或向其写入数据样本时,系统600可以通过计算公式12(12Z+X)+Y来计算缓冲区中的存储地址。当按照顺序X-Z-Y从立方体300的存储位置中读取数据或向其写入数据样本时,系统600可以通过计算公式12(12Y+Z)+X来计算缓冲区中的存储地址。当按照顺序Z-Y-X从立方体300的存储位置中读取数据或向其写入数据样本时,系统600可以通过计算公式12(12X+Y)+Z来计算缓冲区中的存储地址。状态机可以控制交换机610的配置,使得系统600计算与应当按照顺序Y-X-Z、X-Z-Y还是Z-Y-X从立方体300的存储位置中读取数据或向其写入数据样本相对应的公式。
图7是根据说明性实施例的可以用来利用反压为缓冲区生成地址的地址器电路的简化框图。系统700包括电路710和720,以及比较器730。电路710和720中的每个可以基本上与以上结合图6所描述的系统600相同。比较器730可以分别经由引线732和734连接至电路710和电路720。
在实现中,电路710可操作来为缓冲区生成读取地址,而电路720可操作来为缓冲区生成写入地址。以此方式,可以同时从缓冲区的不同的存储地址中读取数据样本并向其写入数据样本。在缓冲区中同时读取和写入数据样本可以按照以上结合图4A、图4B和图4C所描述的方式继续进行。
比较器730可操作来生成二进制值的反压信号,该反压信号可操作来确保电路710生成的读取存储地址不与电路720生成的写入存储地址交叠。比较器730可以在引线740上输出反压信号,如图7所示,引线740可以连接至电路720。引线740可以连接至可操作来为电路720提供时钟信号的时钟。反压信号可以等效为时钟使能信号,即当反压信号具有逻辑高值时,电路720的时钟可以被激活,而当反压信号具有逻辑低值时,电路720的时钟被禁用。当电路720的时钟被禁用时,电路720的计算会被暂时停止。以此方式,如果比较器730确定写入地址与读取地址冲突(例如,写入地址在读取地址之前,或者写入地址是数据还未被读取的存储位置),则逻辑低值反压信号可以阻止电路720生成额外的写入地址。如果比较器730确定写入地址没有与读取地址冲突,则比较器730可以生成逻辑高的反压信号,从而激活电路720的时钟。
比较器730可操作来通过比较经由引线732从电路710接收的存储器读取地址与经由引线734从电路720接收的存储器写入地址来生成反压信号。基于读取地址,比较器730可以确定包含接收到的存储地址的立方体300的存储片是否已经被释放,即是否已经从中读取数据样本。如以上结合图4A、图4B和图4C所描述的,如果存储片已经被释放,则其它数据样本可以自由写入该存储片中。
图8说明包含这里被描述为在数据处理系统800内的延迟确定电路的实施例的电路或其它器件。在实施例中,该电路或器件可以是集成电路、专用标准产品(ASSP)、专用集成电路(ASIC)、可编程逻辑器件(PLD)、全定制芯片或专用芯片。在实施例中,电路860可以基本上类似于电路100。数据处理系统800可以包含下列组件中一个或更多个:处理器870、存储器880、I/O电路850以及外围设备840。这些组件通过系统总线或其它互连830连接在一起,并被填充到包含在终端用户系统810中的电路板820上。
系统800可以在广泛的应用中使用,例如计算机联网、数据联网、检测仪器、视频处理、数字信号处理或者期望使用可编程或可重复编程逻辑的优势的其它应用。电路860可以被用来执行各种不同的逻辑功能。例如,电路800可以被配置为处理器或与处理器870协同工作的控制器。电路860也可以被用作仲裁器,其仲裁对系统800中的共享资源的访问。在又一示例中,电路860可以被配置为系统800中的处理器870和一个其它组件之间的接口。应当注意,系统800只是示例性的,并且本发明的真正范围和精神应当由权利要求来指示。
虽然以上发明中的组件被描述为彼此连接,然而这些组件也可以通过它们之间的其他组件而彼此连接。应当理解,上述内容仅是本发明的原理的说明,并且在不脱离本发明的范围和精神的情况下,本领域技术人员能够进行各种修改。本领域技术人员将领会,本发明能够由除了所描述的实施例之外的实施例实现,呈现所描述的实施例是为了说明而非限制,并且本发明只受权利要求限制。
Claims (20)
1.一种用于将3D存储器的存储位置映射至缓冲区的系统,所述系统包含电路,所述电路用于:
基于使用数据作为输入进行的计算的类型来确定将所述数据存储在所述3D存储器中的所述3D存储器中的第一片;
使用确定的第一片将所述数据存储在所述3D存储器中;
将布置在所述3D存储器中的所述第一片中存储位置映射到所述缓冲区中的第一存储位置;
向所述缓冲区中的所述第一存储位置写入数据;
将布置在所述3D存储器中的第二片中的存储位置映射到所述缓冲区中的第二存储位置,其中所述3D存储器中的所述第二片的存储位置与所述3D存储器中的所述第一片的存储位置交叠;
在向所述缓冲区中的所述第一存储位置写入数据之后,从所述缓冲区的所述第二存储位置读取数据;以及
在从所述缓冲区中的所述第二存储位置读取数据之后,向所述缓冲区中的所述第二存储位置写入数据。
2.根据权利要求1所述的系统,其中所述电路进一步可操作来:
将布置在所述3D存储器中的第三片中的存储位置映射到所述缓冲区中的第三存储位置,其中所述3D存储器中的所述第三片的存储位置与所述3D存储器中的所述第二片的存储位置交叠;
从所述缓冲区中的所述第三存储位置读取数据;
在从所述缓冲区中的所述第三存储位置读取数据之后,向所述缓冲区中的所述第三存储位置写入数据;以及
在向所述缓冲区中的所述第三存储位置写入数据之后,从所述缓冲区中的所述第一存储位置读取数据。
3.根据权利要求2所述的系统,其中:
3D存储器是对称立方体;
所述3D存储器的第一片沿所述对称立方体的第一轴线;
所述3D存储器的第二片沿所述对称立方体的第二轴线;以及
所述3D存储器的第三片沿所述对称立方体的第三轴线。
4.根据权利要求1所述的系统,其中映射布置在所述3D存储器中的所述第一片中的存储位置进一步包括基于布置在所述3D存储器中的所述第一片中的对应的存储位置生成与所述缓冲区中的所述第一存储位置相关联的存储地址。
5.根据权利要求1所述的系统,其中所述缓冲区中的所述第一存储位置和所述缓冲区中的所述第二存储位置被锁定。
6.根据权利要求1所述的系统,其中响应于从所述缓冲区中的所述第二存储位置读取数据,所述缓冲区中的所述第二存储位置被释放。
7.根据权利要求3所述的系统,其中所述对称立方体的大小被选择为存储基本上对应于最大数据帧的大小的数个数据样本。
8.根据权利要求1所述的系统,其中所述电路被进一步配置为生成反压使能信号,从而控制数据流向所述缓冲区的速率。
9.一种用于将3D存储器中的存储位置映射至缓冲区的方法,所述方法包括:
基于使用数据作为输入进行的计算的类型来确定将所述数据存储在所述3D存储器中的所述3D存储器中的第一片;
使用确定的第一片将所述数据存储在所述3D存储器中;
将布置在所述3D存储器中的所述第一片中的存储位置映射到所述缓冲区中的第一存储位置;
向所述缓冲区中的所述第一存储位置写入数据;
将布置在所述3D存储器中的第二片中的存储位置映射到所述缓冲区中的第二存储位置,其中所述3D存储器中的所述第二片的存储位置与所述3D存储器中的所述第一片的存储位置交叠;
在向所述缓冲区的所述第一存储位置写入数据之后,从所述缓冲区中的所述第二存储位置读取数据;以及
在从所述缓冲区中的所述第二存储位置读取数据之后,向所述缓冲区中的所述第二存储位置写入数据。
10.根据权利要求9所述的方法,其进一步包括:
将布置在所述3D存储器中的第三片中的存储位置映射到所述缓冲区中的第三存储位置,其中所述3D存储器中的所述第三片的存储位置与所述3D存储器中的所述第二片的存储位置交叠;
从所述缓冲区中的所述第三存储位置读取数据;
在从所述缓冲区中的所述第三存储位置读取数据之后,向所述缓冲区中的所述第三存储位置写入数据;以及
在向所述缓冲区中的所述第三存储位置写入数据之后,从所述缓冲区中的所述第一存储位置读取数据。
11.根据权利要求10所述的方法,其中:
3D存储器是对称立方体;
所述3D存储器的第一片沿所述对称立方体的第一轴线;
所述3D存储器的第二片沿所述对称立方体的第二轴线;以及
所述3D存储器的第三片沿所述对称立方体的第三轴线。
12.根据权利要求9所述的方法,其中映射布置在所述3D存储器中的所述第一片中的存储位置进一步包括基于布置在所述3D存储器中的所述第一片中的对应的存储位置生成与所述缓冲区中的所述第一存储位置相关联的存储地址。
13.根据权利要求9所述的方法,其中所述缓冲区中的所述第一存储位置和所述缓冲区中的所述第二存储位置被锁定。
14.根据权利要求9所述的方法,其中响应于从所述缓冲区中的所述第二存储位置读取数据,所述缓冲区中的所述第二存储位置被释放。
15.根据权利要求11所述的方法,其中所述对称立方体的大小被选择为存储基本上对应于最大数据帧的大小的数个数据样本。
16.根据权利要求9所述的方法,其进一步包括生成反压使能信号,从而控制数据流向所述缓冲区的速率。
17.一种基于3D存储器为缓冲区生成地址的系统,所述系统包含电路,所述电路用于:
基于使用数据作为输入进行的计算的类型来确定将所述数据存储在所述3D存储器中的所述3D存储器中的第一片;
使用确定的第一片将所述数据存储在所述3D存储器中;
将布置在所述3D存储器中的所述第一片中的存储位置映射到所述缓冲区中的第一存储位置;
基于布置在所述3D存储器中的所述第一片中的对应的存储位置生成与所述缓冲区中的所述第一存储位置相关联的存储地址;
向所述缓冲区中的所述第一存储位置写入数据;
将布置在所述3D存储器中的第二片中的存储位置映射到所述缓冲区中的第二存储位置;
基于布置在所述3D存储器中的所述第二片中的对应的存储位置生成与所述缓冲区中的所述第二存储位置相关联的存储地址;以及
在向所述缓冲区中的所述第一存储位置写入数据之后,从所述缓冲区中的所述第二存储位置读取数据。
18.根据权利要求17所述的系统,其中所述缓冲区中的所述第一存储位置和所述缓冲区中的所述第二存储位置被锁定。
19.根据权利要求18所述的系统,其中响应于从所述缓冲区中的所述第二存储位置读取数据,所述缓冲区中的所述第二存储位置被释放。
20.根据权利要求17所述的系统,其中所述电路被进一步配置为生成反压使能信号,从而控制数据流向所述缓冲区的速率。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/648,443 US9203671B2 (en) | 2012-10-10 | 2012-10-10 | 3D memory based address generator for computationally efficient architectures |
US13/648,443 | 2012-10-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103777896A CN103777896A (zh) | 2014-05-07 |
CN103777896B true CN103777896B (zh) | 2019-04-16 |
Family
ID=50433702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310469997.0A Active CN103777896B (zh) | 2012-10-10 | 2013-10-10 | 基于3d存储器的地址生成器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9203671B2 (zh) |
CN (1) | CN103777896B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102905056B (zh) * | 2012-10-18 | 2015-09-02 | 利亚德光电股份有限公司 | 视频图像处理方法及装置 |
US9804996B2 (en) * | 2012-12-21 | 2017-10-31 | Advanced Micro Devices, Inc. | Computation memory operations in a logic layer of a stacked memory |
SE539721C2 (en) * | 2014-07-09 | 2017-11-07 | Device and method for performing a Fourier transform on a three dimensional data set | |
CN104268122B (zh) * | 2014-09-12 | 2017-03-22 | 安徽四创电子股份有限公司 | 一种可变点数的浮点fft处理器 |
KR20160127524A (ko) * | 2015-04-27 | 2016-11-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN112905110B (zh) * | 2021-01-29 | 2023-03-24 | 展讯半导体(成都)有限公司 | 数据存储方法及装置、存储介质、用户设备、网络侧设备 |
FR3133459B1 (fr) | 2022-03-11 | 2024-03-22 | Commissariat Energie Atomique | Générateur d’adresses pour un calculateur à architecture de type « instruction unique, données multiples » |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100485927C (zh) * | 2001-11-18 | 2009-05-06 | 张国飙 | 三维存储器 |
CN102272849A (zh) * | 2008-12-30 | 2011-12-07 | 美光科技公司 | 可变存储器刷新装置和方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6051179A (en) * | 1997-03-19 | 2000-04-18 | Replicator Systems, Inc. | Apparatus and method for production of three-dimensional models by spatial light modulator |
US6628819B1 (en) * | 1998-10-09 | 2003-09-30 | Ricoh Company, Ltd. | Estimation of 3-dimensional shape from image sequence |
AU2001239926A1 (en) * | 2000-02-25 | 2001-09-03 | The Research Foundation Of State University Of New York | Apparatus and method for volume processing and rendering |
US7027642B2 (en) * | 2000-04-28 | 2006-04-11 | Orametrix, Inc. | Methods for registration of three-dimensional frames to create three-dimensional virtual models of objects |
WO2002069370A2 (en) * | 2000-11-12 | 2002-09-06 | Bitboys, Inc. | 3-d rendering engine with embedded memory |
EP1703427A4 (en) * | 2003-10-29 | 2008-03-19 | Lattice Technology Inc | SYSTEM FOR OBTAINING PROFILE INFORMATION FROM THREE-DIMENSIONAL PROFILED DATA, METHOD AND COMPUTER SOFTWARE PROGRAM THEREFOR |
US7589844B2 (en) * | 2005-07-15 | 2009-09-15 | Asahi Glass Company, Limited | Shape inspection method and apparatus |
US7477535B2 (en) * | 2006-10-05 | 2009-01-13 | Nokia Corporation | 3D chip arrangement including memory manager |
US20080284798A1 (en) * | 2007-05-07 | 2008-11-20 | Qualcomm Incorporated | Post-render graphics overlays |
US20120007951A1 (en) * | 2009-03-29 | 2012-01-12 | Nomad3D Sas | System and format for encoding data and three-dimensional rendering |
KR101710658B1 (ko) * | 2010-06-18 | 2017-02-27 | 삼성전자 주식회사 | 관통 전극을 갖는 3차원 적층 구조의 반도체 장치 및 그 반도체 장치의 시그널링 방법 |
KR101824068B1 (ko) * | 2011-07-28 | 2018-03-15 | 삼성전자주식회사 | 메모리 컨트롤러 구동방법, 및 메모리 컨트롤러를 포함하는 메모리 시스템, 메모리 카드 및 휴대용 전자장치 |
US9117493B2 (en) * | 2011-09-01 | 2015-08-25 | Chengdu Haicun Ip Technology Llc | Discrete three-dimensional memory comprising off-die address/data translator |
US8890300B2 (en) * | 2011-09-01 | 2014-11-18 | Chengdu Haicun Ip Technology Llc | Discrete three-dimensional memory comprising off-die read/write-voltage generator |
US9003160B2 (en) * | 2012-08-03 | 2015-04-07 | International Business Machines Corporation | Active buffered memory |
-
2012
- 2012-10-10 US US13/648,443 patent/US9203671B2/en active Active
-
2013
- 2013-10-10 CN CN201310469997.0A patent/CN103777896B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100485927C (zh) * | 2001-11-18 | 2009-05-06 | 张国飙 | 三维存储器 |
CN102272849A (zh) * | 2008-12-30 | 2011-12-07 | 美光科技公司 | 可变存储器刷新装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20140101409A1 (en) | 2014-04-10 |
US9203671B2 (en) | 2015-12-01 |
CN103777896A (zh) | 2014-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103777896B (zh) | 基于3d存储器的地址生成器 | |
CN103699515B (zh) | 一种fft并行处理装置和方法 | |
US7752249B2 (en) | Memory-based fast fourier transform device | |
WO2017000756A1 (zh) | 基于3072点快速傅里叶变换的数据处理方法及处理器、存储介质 | |
JP2009535678A (ja) | パイプラインfftのアーキテクチャおよび方法 | |
CN103748576B (zh) | 自适应均衡器 | |
US8195733B2 (en) | Systolic array | |
US7428564B2 (en) | Pipelined FFT processor with memory address interleaving | |
CN102652315A (zh) | 信息处理设备、其控制方法、程序及计算机可读存储媒体 | |
WO2013050494A1 (en) | Simd memory circuit and methodology to support upsampling, downsampling and transposition | |
CN101847137A (zh) | 一种实现基2fft计算的fft处理器 | |
CN104699624A (zh) | 面向fft并行计算的无冲突存储访问方法 | |
CN104932992B (zh) | 一种带宽粒度可变的微波数字柔性转发方法 | |
CN107391439A (zh) | 一种可配置快速傅里叶变换的处理方法 | |
Kala et al. | High throughput, low latency, memory optimized 64K point FFT architecture using novel radix-4 butterfly unit | |
CN105718424A (zh) | 一种并行快速傅立叶变换处理方法 | |
CN105894440B (zh) | 一种图像多层数据处理方法和装置 | |
CN1118033C (zh) | 3780点离散傅里叶变换处理器系统 | |
US20140365547A1 (en) | Mixed-radix pipelined fft processor and fft processing method using the same | |
US6631167B1 (en) | Process and device for transforming real data into complex symbols, in particular for the reception of phase-modulated and amplitude-modulated carriers transmitted on a telephone line | |
WO2011102291A1 (ja) | 高速フーリエ変換回路 | |
Das et al. | Efficient VLSI Architectures of Split-Radix FFT using New Distributed Arithmetic | |
Polychronakis et al. | A continuous-flow, Variable-Length FFT SDF architecture | |
CN101354701B (zh) | 一种实现基4fft/ifft计算的fft处理器 | |
CN101296211A (zh) | 3780点离散傅立叶变换处理器 |
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 |