CN101512499A - 相对地址产生 - Google Patents
相对地址产生 Download PDFInfo
- Publication number
- CN101512499A CN101512499A CNA2007800319388A CN200780031938A CN101512499A CN 101512499 A CN101512499 A CN 101512499A CN A2007800319388 A CNA2007800319388 A CN A2007800319388A CN 200780031938 A CN200780031938 A CN 200780031938A CN 101512499 A CN101512499 A CN 101512499A
- Authority
- CN
- China
- Prior art keywords
- address
- storage unit
- specific address
- processor according
- register banks
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 claims abstract description 115
- 238000000034 method Methods 0.000 claims abstract description 15
- 230000015654 memory Effects 0.000 claims abstract description 12
- 230000004087 circulation Effects 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 13
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 238000013461 design Methods 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 description 14
- 230000008520 organization Effects 0.000 description 13
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000014759 maintenance of location Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241001062009 Indigofera Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- 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/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明描述有效地处置相对寻址的技术。在一种设计中,处理器包含地址产生器和存储单元。所述地址产生器接收包括基址和偏移的相对地址,获得所述基址的基值,将所述基值与所述偏移求和,并提供对应于所述相对地址的绝对地址。所述存储单元接收所述基址并将所述基值提供到所述地址产生器。所述存储单元还接收所述绝对地址并在此地址处提供数据。所述地址产生器可在存储器存取的第一时钟循环中导出所述绝对地址。所述存储单元可在所述存储器存取的第二时钟循环中提供所述数据。所述存储单元可具有多个(例如,两个)读取端口以支持同时的地址产生和数据检索。
Description
技术领域
本发明大体上涉及电子设备,且更具体地说涉及用于产生相对地址的技术。
背景技术
处理器广泛用于例如通信、计算、数据联网等各种应用。处理器可对存储在存储单元中的数据执行各种操作,所述存储单元可以是寄存器堆、随机存取存储器(RAM)等。可通过绝对地址或相对地址来指定用于操作的数据。绝对地址指向存储单元中存储所述数据的特定位置。相对地址由基址和偏移给出。基址指向存储单元中的参考位置。偏移指示参考位置与存储数据的实际位置之间的距离。相对地址通常转换为绝对地址,接着使用绝对地址从存储单元中取得所需数据。
作为一实例,将两个运算数相加的指令可给出为:
add r0,x0[r1+15],r2。
第一运算数存储在寄存器/位置r2中。第二运算数存储在由存储在寄存器r1中的基值和偏移15确定的位置处。两个运算数求和的结果存储在寄存器/位置r0中。
以上指令通常转换为两个指令,如下:
add a0,r1,15
add r0,x0[a0],r2。
第一指令通过将寄存器r1中的基值与偏移15求和且接着将绝对地址存储在寄存器a0中来计算第二运算数的绝对地址。第二指令计算两个运算数的和,其中第二运算数由通过第一指令计算的绝对地址确定。算术逻辑单元(ALU)可针对第一和第二指令两者执行计算。
将使用相对寻址的单个指令转换为两个指令出于若干原因可能不合乎需要。第一,通过第一指令计算绝对地址消耗ALU资源。第二,按照连续次序完成两个指令可能会经历较长延迟,因为第二指令依赖于第一指令的结果。此延迟损失在ALU具有多个级时更加严重。因多个ALU级引起的较长延迟可能会对性能造成不利影响。
因此,此项技术中需要有效地处置相对寻址的技术。
发明内容
本文描述有效地处置相对寻址的技术。在一实施例中,处理器包含地址产生器和存储单元。所述地址产生器接收包括基址和偏移的相对地址,获得所述基址的基值,将所述基值与所述偏移求和,并提供对应于所述相对地址的绝对地址。所述存储单元接收所述基址并将所述基值提供到所述地址产生器。所述存储单元还接收所述绝对地址并在此地址处提供数据。所述地址产生器可在存储器存取的第一时钟循环中导出所述绝对地址。所述存储单元可在所述存储器存取的第二时钟循环中提供所述数据。所述存储单元可具有多个(例如,两个)读取端口以支持同时的地址产生和数据检索。
在另一实施例中,处理器包含多个地址产生器和多个寄存器库(register bank)。所述地址产生器接收相对地址并提供绝对地址。寄存器库接收绝对地址并在这些地址处提供数据。寄存器库还可接收相对地址的基址并提供基值。产生器可将相对地址的偏移与基值求和以获得绝对地址。处理器可进一步包含地址交叉开关(address crossbar)、数据交叉开关和多个ALU。地址交叉开关将地址产生器的输出耦合到寄存器库。数据交叉开关将来自寄存器库的数据提供到ALU。ALU同时对来自寄存器库的数据(例如,用于多个像素)进行运算。
下文进一步详细描述本发明的各个方面和实施例。
附图说明
通过结合附图考虑下文陈述的详细描述,将更加明白本发明的各方面和实施例,附图中相同参考符号始终相应地标示。
图1A和1B分别展示绝对寻址和相对寻址。
图2展示支持相对寻址的存储结构。
图3展示支持使用相对寻址的读取和写入的存储结构。
图4展示支持相对寻址的双端口存储结构。
图5展示图形处理器。
图6展示图形处理器内的ALU核心和寄存器库。
图7展示图形数据在寄存器库中的存储。
图8展示将寄存器库耦合到ALU核心的数据交叉开关。
图9展示无线装置的框图。
具体实施方式
本文使用词汇“示范性”来表示“充当实例、例子或说明”。本文中描述为“示范性”的任何实施例或设计均不一定解释为比其它实施例或设计优选或有利。
图1A展示使用绝对寻址的读取操作。绝对地址指向存储单元中的一位置,所述存储单元可以是存储器、寄存器库等。提供存储在此位置的数据作为输出数据。
图1B展示使用相对寻址的读取操作。相对地址由基址和偏移组成。基址指向存储单元中存储基值的位置。将基值与偏移求和以产生对应于相对地址的绝对地址。基值或偏移可以是负值,但绝对地址通常为正值。提供存储在由绝对地址指向的位置的数据作为输出数据。
图2展示有效地支持使用相对寻址的存储器存取的存储结构200的实施例的框图。存储结构200包含地址产生器210和存储单元230。存储结构200接收绝对地址或相对地址,并在由所接收地址指示的位置处提供数据(例如,运算数)。
地址产生器210接收地址信息,其可包括源识别符(ID)和偏移。源ID可以是指令的一部分或可来自某一其它源(例如,缓冲器)。源ID可含有绝对地址或基址。对于相对地址,加法器220接收来自存储单元230的输出和偏移,将两个输入求和,并将结果提供到锁存器222。多路复用器(Mux)224接收锁存器222的输出和关于两个输入的地址信息,并将两个输入中的一者提供到存储单元230。
如果地址信息包括绝对地址,那么多路复用器224将绝对地址直接提供到存储单元230,存储单元230接着在由绝对地址指示的位置处提供数据。如果地址信息包括相对地址,那么在两个时钟循环中计算并提供相应的绝对地址。在第一时钟循环中,多路复用器224将地址信息中的基址(例如,源ID)提供到存储单元230,存储单元230接着将基值提供到加法器220。加法器220接着将地址信息中的偏移与来自存储单元230的基值求和并将基址提供到锁存器222。在第二时钟循环中,多路复用器224将来自锁存器222的绝对地址提供到存储单元230,存储单元230接着在由绝对地址指示的位置处提供数据。
加法器220可以是可将两个整数值求和并提供整数结果的简单加法器。加法器220可利用此项技术中已知的任何设计实施且通常远比ALU简单。存储单元230可以是被指派得到不同唯一地址的寄存器的库或阵列。存储单元230还可以是例如RAM、同步RAM(SRAM)、同步动态RAM(SDRAM)、快闪存储器等其它类型的存储装置。
在图2所示的实施例中,在两个时钟循环中执行使用相对寻址的读取操作。在第一时钟循环中计算绝对地址,且在第二时钟循环中检索数据。此实施例分解了读取操作的总延迟并允许较高时钟速度用于存储结构200。锁存器(图2中未展示)可接收地址信息并将其输出提供到多路复用器224的第二输入。此锁存器将延迟绝对地址以与相对地址的延迟匹配。或者,可在存储单元230的输出端处添加寄存器(图2中也未展示)以使相对地址的输出数据与绝对地址的输出数据在时间上对准。
在另一实施例中,不存在锁存器222,且在一个时钟循环中执行绝对地址计算和数据检索。在又一实施例中,可插入一个以上锁存器以进一步分解总延迟并支持更高的时钟速度。
存储结构200可提供某些优点。第一,可基于地址信息(例如,指令中包含的源ID)在运行中计算绝对地址。此特征可消除针对每一执行线程具有一地址寄存器的需要,这可为多线程处理器提供显著节省。第二,不消耗ALU资源来计算绝对地址。所节省的ALU资源可用于其它操作。第三,不将使用相对寻址的指令转换为两个指令。这可减少延迟并改进处理量。通过使用存储结构200可能还有其它益处。
图3展示有效地支持使用相对寻址的读取和写入的存储结构300的实施例的框图。存储结构300包含地址产生器310和存储单元330。地址产生器310接收源地址信息和目的地地址信息。源地址信息指示用于读取操作的读取地址且可包括源ID和偏移。源ID可包含绝对地址或基址。目的地地址信息指示用于写入操作的写入地址且可包括目的地ID和偏移。目的地ID可包含绝对地址或基址。源ID和目的地ID可以是指令的一部分或可来自其它源。
在地址产生器310内,多路复用器318在两个输入处接收源地址信息和目的地地址信息并将所述两个输入中的一者提供到加法器320。加法器320还接收来自存储单元330的输出,将两个输入求和,并将结果提供到锁存器322。多路复用器324在三个输入上接收锁存器322的输出、源地址信息和目的地地址信息,并将所述三个输入中的一者提供到存储单元330。多路复用器326在两个输入上接收锁存器322的输出和目的地地址信息,并将所述两个输入中的一者提供到延迟单元328。单元328提供与对来自存储单元330的运算数进行运算的ALU(图3中未展示)的延迟匹配的延迟。举例来说,如果ALU具有四个时钟循环的延迟,那么单元328提供四个时钟循环的延迟。单元328将写入地址提供到存储单元330。
可如下从源地址信息计算读取地址。如果源地址信息包括绝对地址,那么多路复用器324将绝对地址作为读取地址提供到存储单元330。如果源地址信息包括相对地址,那么在第一时钟循环中,多路复用器318将源地址信息中的偏移提供到加法器320,多路复用器324将源地址信息中的基址(例如,源ID)提供到存储单元330,且加法器320将来自多路复用器318的偏移与来自存储单元330的基值求和,并将绝对地址提供到锁存器322。在第二时钟循环中,多路复用器324将来自锁存器322的绝对地址作为读取地址提供到存储单元330。
可如下从目的地地址信息计算写入地址。如果目的地地址信息包括绝对地址,那么多路复用器326将绝对地址作为写入地址提供到存储单元330。如果目的地地址信息包括相对地址,那么在第一时钟循环中,多路复用器318将目的地地址信息中的偏移提供到加法器320,多路复用器324将目的地地址信息中的基址(例如,目的地ID)提供到存储单元330,且加法器320将来自多路复用器318的偏移与来自存储单元330的基值求和,并将绝对地址提供到锁存器322。在第二时钟循环中,多路复用器326将来自锁存器322的绝对地址作为写入地址提供到存储单元330。
图4展示有效地支持相对寻址的双端口存储结构400的实施例的框图。存储结构400包含地址产生器410和存储单元430。存储单元430具有可在一个时钟循环中在两个位置处提供数据的两个读取端口。地址产生器410包含加法器420、锁存器422和多路复用器424,其以与图2中的加法器220、锁存器222和多路复用器224相同的方式耦合。地址产生器410进一步包含多路复用器428,其具有耦合到两个读取端口的两个输入和耦合到加法器420的一输出。控制器或资源管理器(图4中未展示)可基于所执行指令中的地址信息产生用于多路复用器424和428的控制信号。
两个读取端口支持以交错方式针对两个存储器存取(例如,通过两个指令)检索数据。举例来说,可在第一时钟循环中通过经由多路复用器424将基址提供到存储单元430并经由端口0获得基值来计算第一指令的绝对地址。在第二时钟循环中,可通过将来自锁存器422的绝对地址提供到存储单元430并经由端口0获得数据来检索第一指令的数据。同样在第二时钟循环中,可通过将基址经由多路复用器424提供到存储单元430并经由端口1获得基值来计算第二指令的绝对地址。在第三时钟循环中,可通过将来自锁存器422的绝对地址提供到存储单元430并经由端口1获得数据来检索第二指令的数据。
在另一实施例中,指定一个端口(例如,端口0)提供相对地址的基值,且指定另一端口(例如,端口1)提供数据。在此实施例中,可省略多路复用器428,且存储单元430的端口0可直接耦合到加法器420。交叉开关可将锁存器422和多路复用器424的输出耦合到存储单元430的两个地址输入。
两个读取端口支持每时钟循环一个读取操作,其中每一读取操作具有两个时钟循环的延迟。在图4所示的实施例中,单个加法器420可在每一时钟循环中计算一绝对地址。两个读取端口可支持同时的地址产生和数据检索。
存储单元430还可包含两个写入端口(图4中未展示)以支持以交错方式针对两个存储器存取写入数据。
本文描述的技术可用于支持相对寻址的各种类型的处理器。举例来说,所述技术可用于图形处理器、图形处理单元(GPU)、数字信号处理器(DSP)、精简指令集计算机(RISC)、高级RISC机器(ARM)、控制器、微处理器等。下文描述用于图形处理器的技术的示范性用途。
图5展示支持L个图形应用程序/程序的图形处理器500的实施例的框图,其中通常L≥1。所述L个图形应用程序可用于视频游戏、图形等,且可同时运行。图形处理器500包含着色器核心502、纹理引擎504和高速缓冲存储器系统506。术语“核心”、“引擎”、“机器”、“处理器”和“处理单元”常可互换使用。着色器核心502可执行例如着色等图形操作,着色是涉及照明、阴影等的高度复杂的操作。纹理引擎504可执行例如纹理映射等图形操作,纹理映射涉及以纹理表的颜色修改图像的像素的颜色。高速缓冲存储器系统506可包含一个或一个以上高速缓冲存储器,其是可存储用于着色器核心502和纹理引擎504的数据和指令的快速存储器。
在着色器核心502内,多路复用器510接收来自L个图形应用程序的线程并将这些线程提供到线程调度器/指令解码器512。线程调度器512执行各种功能以调度并管理线程的执行。指令高速缓冲存储器516存储用于线程的指令。这些指令指示待针对每一线程执行的特定操作,且可从高速缓冲存储器系统506和/或主存储器载入。ALU核心520执行算术运算、逻辑运算、格式转换等。常数缓冲器522存储由ALU核心520使用的常数值。载入控制单元514控制用于着色器核心502和纹理引擎504内的各种单元的数据和指令流。寄存器库530存储来自ALU核心520和ALU544的中间和最终结果。解多路复用器(Demux)532从寄存器库530接收所执行线程的最终结果,并将这些结果提供到图形应用程序。
在纹理引擎504内,纹理地址产生器540计算待由纹理引擎504操作的每一像素的位置。纹理高速缓冲存储器542存储用于纹理引擎504的像素。ALU544对所述像素执行计算并提供中间结果,中间结果可被存储回寄存器库530中。
图6展示图5中的着色器核心502内的ALU核心520和寄存器库530的实施例。在此实施例中,ALU核心520包含四个标量ALU620a、620b、620c和620d。每一ALU620可从数据交叉开关640接收多达三个输入运算数,对输入运算数执行算术或逻辑运算,并将结果提供回到数据交叉开关640。
在图6所示的实施例中,寄存器库530包含四个寄存器库630a、630b、630c和630d,其可如下文所描述存储图形数据。三个地址产生器610a、610b和610c接收三个运算数的源地址信息并产生这些运算数的读取地址。地址产生器610d接收目的地地址信息并产生结果的写入地址。线程调度器512内的指令解码器可将地址信息提供到每一地址产生器610。每一地址产生器610可用图2中的地址产生器200或图4中的地址产生器400实施。地址交叉开关612将所述三个读取地址和所述写入地址提供到适当的寄存器库630和常数缓冲器522。
每一寄存器库630可从三个地址产生器610a到610c中的一者接收读取地址并针对读取操作,将由读取地址指示的位置处的数据提供到数据交叉开关640。每一寄存器库630还可从地址产生器610d接收写入地址并针对写入操作,将来自数据交叉开关640的数据存储在由写入地址指示的位置处。
在一实施例中,可同时存取(从其读取和/或向其写入)所有四个寄存器库630a到630d。一般来说,每一寄存器库630可包含任何数目的读取端口和任何数目的写入端口。在一实施例中,每一寄存器库630包含两个读取端口和两个写入端口。两个读取端口允许以交错方式针对两个读取操作检索数据。两个写入端口允许以交错方式针对两个写入操作写入数据。
数据交叉开关640从寄存器库630a到630d和常数缓冲器522接收数据并将多达三个运算数提供到每一ALU 620。一般来说,用于每一ALU 620的输入运算数可来自四个寄存器库630a到630d和/或常数缓冲器522中的任一者。来自每一ALU 620的结果也可存储在四个寄存器库630a到630d中的任一者中。
寄存器库530可存储待由着色器核心502和/或纹理引擎504操作的像素的数据。2维(2-D)或3维(3-D)图像可用多边形(通常为三角形)来表示。每一三角形可由像素组成。每一像素可具有例如空间坐标、色值、纹理坐标等各种属性。每一属性可具有多达四个分量。举例来说,空间坐标可由三个分量x、y和z或四个分量x、y、z和w给出,其中x和y是水平和垂直坐标,z是深度,且w是齐次坐标。色值可由三个分量r、g和b或四个分量r、g、b和a给出,其中r是红、g是绿、b是蓝,且a是确定像素的透明度的透明度因数。纹理坐标通常由水平坐标和垂直坐标(u和v)给出。像素还可与其它属性相关联。
图7展示在图6中的寄存器库630a到630d中存储像素的图形数据的实施例。在此实施例中,每一寄存器库630存储空间坐标的不同分量、色值的不同分量,和纹理坐标的一个分量。明确地说,寄存器库630a存储水平(x)空间坐标、红(r)色值和水平(u)纹理坐标。寄存器库630b存储垂直(y)空间坐标、绿(g)色值和垂直(v)纹理坐标。寄存器库630c存储深度(z)空间坐标、蓝(b)色值和水平(u)纹理坐标。寄存器库630d存储齐次(w)空间坐标、透明度(a)色值和垂直(v)纹理坐标。此实施例可允许有效地检索用于ALU 620a到620d的数据以及有效地存储来自ALU的结果。一般来说,可以任何方式存储像素的数据,例如每一寄存器库可存储像素的属性的所有分量。
可向待执行的每一线程分配四个寄存器库630a到630d中的足够数目的寄存器。在图7所示的实例中,每一线程包含用于四个像素的数据,所述像素表示为P0、P1、P2和P3。对于线程0,四个像素的水平空间坐标(P0.X、P1.X、P2.X和P3.X)存储在寄存器库630a的寄存器0中,四个像素的红色值(P0.R、P1.R、P2.R和P3.R)存储在寄存器库630a中的寄存器1中,四个像素的水平纹理坐标(P0.u0、P1.u0、P2.u0和P3.u0)存储在寄存器库630a中的寄存器2中,且四个像素的水平纹理坐标(P0.u2、P1.u2、P2.u2和P3.u2)存储在寄存器库630a的寄存器3中。u0和v0、u1和v1、u2和v2以及u3和v3是可用于纹理化的四个纹理映射的纹理坐标。线程0的四个像素的其它分量存储在寄存器库630b、630c和630d中的寄存器0到3中,如图7所示。线程1、2和3的像素的分量也存储在四个寄存器库630a到630d中,如图7所示。
图8展示图6中的数据交叉开关640的实施例。在此实施例中,数据交叉开关640包含分别用于四个ALU 620a到620d的四个多路复用器组840a到840d。多路复用器组840a包含用于ALU 620a的三个输入运算数的三个多路复用器842a、842b和842c。每一多路复用器842在六个输入处接收来自四个寄存器库620a到620d的数据、来自常数缓冲器522的数据,和来自ALU 620a的结果。每一多路复用器842提供六个输入中的一者作为用于ALU 620a的一个输入运算数。如图8所示,每一寄存器库620可提供用于ALU 620a的三个输入运算数中的任一者。多路复用器组840b、840c和840d可每一者以与多路复用器组840a相同的方式实施。多路复用器组840a到840d可接收不同的控制信号,其可由所执行的指令确定。
一般来说,指令可以是基于向量或基于像素的,且ALU也可以是基于向量或基于像素的。基于向量是指一次并行存取或处理一个像素的多达四个分量。基于像素是指一次并行存取或处理多达四个像素的一个分量。在一实施例中,指令是基于向量的,且ALU是基于像素的。基于向量的指令允许省略对无效像素的计算。基于像素的ALU允许仅计算所关注的分量。举例来说,为了将两个空间分量x与y求和,四个ALU可在同一时钟循环中对四个像素有效地执行此计算。基于向量的指令和基于像素的ALU因此可改进总体性能。
图6到8所示的实施例支持从四个寄存器库630a到630d有效地检索数据以及通过四个ALU 620a到620d对所检索数据进行有效的运算。作为一实例,可将四个像素的两个空间分量x与y求和。地址产生器610a和610b可产生用于寄存器库630a和630b的读取地址,且地址产生器610d可产生结果的写入地址。在一个读取循环中,寄存器库630a提供四个像素的x空间分量,且寄存器库630b提供四个像素的y空间分量。数据交叉开关640分别将第一、第二、第三和第四像素的x和y分量提供到ALU 620a、620b、620c和620d。每一ALU 620对一个像素的x和y分量进行运算。数据交叉开关640接着将来自四个ALU 620a和620d的结果提供到指定的寄存器库,所述指定的寄存器库将结果存储在由地址产生器610d计算的写入地址处。未由ALU 620存取的寄存器库可由图形处理器500内的其它单元(例如,载入控制单元514)存取。
本文描述的技术可用于无线通信、计算、联网、个人电子设备等。下文描述用于无线通信的技术的示范性用途。
图9展示无线通信系统中的无线装置900的实施例的框图。无线装置900可以是蜂窝式电话、终端、手持机、个人数字助理(PDA),或某一其它装置。无线通信系统可以是码分多址(CDMA)系统、全球移动通信系统(GSM)系统,或某一其它系统。
无线装置900能够经由接收路径和传输路径提供双向通信。在接收路径上,由基站传输的信号被天线912接收且提供到接收器(RCVR)914。接收器914调节并数字化所接收信号并将样本提供到数字区段920以供进一步处理。在传输路径上,传输器(TMTR)916接收待从数字区段920传输的数据,处理并调节所述数据,并产生经调制信号,所述经调制信号经由天线912传输到基站。
数字区段920包含各种处理、接口和存储器单元,例如调制解调器处理器922、视频处理器924、控制器/处理器926、显示器处理器928、ARM/DSP 932、图形处理器934、内部存储器936,和外部总线接口(EBI)938。调制解调器处理器922对数据传输和接收执行处理(例如,编码、调制、解调和解码)。视频处理器924对用于例如摄像机、视频重放和视频会议等视频应用的视频内容(例如,静态图像、运动视频和运动文本)执行处理。控制器/处理器926可引导数字区段920内的各种处理和接口单元的操作。显示器处理器928执行处理以促进视频、图形和文本在显示器单元930上的显示。ARM/DSP932可为无线装置900执行各种类型的处理。图形处理器934执行图形处理且可如图5所示而实施。本文描述的技术可用于数字区段920中的处理器中的任一者,例如图形处理器934。内部存储器936存储用于数字区段920内各种单元的数据和/或指令。EBI938促进数字区段920(例如,内部存储器936)与主存储器940之间的数据传递。
数字区段920可用一个或一个以上DSP、微处理器、RISC等实施。数字区段920还可制造于一个或一个以上专用集成电路(ASIC)或某一其它类型的集成电路(IC)上。
本文描述的技术可在各种硬件单元中实施。举例来说,所述技术可在ASIC、DSP、RISC、ARM、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器和其它电子单元中实施。
提供对所揭示的实施例的先前描述以使所属领域的技术人员能够制造或使用本发明。所属领域的技术人员将容易明白对于这些实施例的各种修改,且本文定义的一般原理可在不偏离本发明的精神或范围的情况下应用于其它实施例。因此,不希望本发明限于本文展示的实施例,而是本发明应被赋予与本文揭示的原理和新颖特征一致的最广泛范围。
Claims (28)
1.一种处理器,其包括:
地址产生器,其操作以接收包括基址和偏移的相对地址,获得所述基址的基值,将所述基值与所述偏移求和,并提供对应于所述相对地址的绝对地址;以及
存储单元,其操作以接收所述基址并将所述基值提供到所述地址产生器。
2.根据权利要求1所述的处理器,其中所述地址产生器在存储器存取的第一时钟循环中导出所述绝对地址,且其中在所述存储器存取的第二时钟循环中在所述绝对地址处存取所述存储单元。
3.根据权利要求1所述的处理器,其中所述地址产生器包括加法器,所述加法器操作以将所述基值与所述偏移求和。
4.根据权利要求3所述的处理器,其中所述地址产生器进一步包括
锁存器,其耦合到所述加法器且操作以存储所述加法器的输出并提供所述绝对地址。
5.根据权利要求4所述的处理器,其中所述地址产生器进一步包括
多路复用器,其耦合到所述锁存器且操作以将来自所述锁存器的所述绝对地址或所述基址提供到所述存储单元。
6.根据权利要求5所述的处理器,其中所述多路复用器操作以在存储器存取的第一时钟循环中将所述基址提供到所述存储单元,并在所述存储器存取的第二时钟循环中将所述绝对地址提供到所述存储单元。
7.根据权利要求4所述的处理器,其中所述地址产生器进一步包括
第一多路复用器,其操作以接收源地址信息和目的地地址信息并将所述偏移提供到所述加法器;以及
第二多路复用器,其操作以接收所述源地址信息和所述锁存器的输出,在读取操作的第一时钟循环中提供来自所述源地址信息的所述基址,并在所述读取操作的第二时钟循环中提供所述锁存器的所述输出。
8.根据权利要求7所述的处理器,其中所述地址产生器进一步包括
第三多路复用器,其操作以接收所述目的地地址信息和所述锁存器的所述输出并为写入操作提供所述绝对地址。
9.根据权利要求8所述的处理器,其中所述地址产生器进一步包括
延迟单元,其操作以接收所述第三多路复用器的输出并为所述写入操作提供写入地址。
10.根据权利要求3所述的处理器,其中所述存储单元包括第一端口和第二端口,且其中所述地址产生器操作以从所述第一端口或所述第二端口接收所述基值。
11.根据权利要求1所述的处理器,其中所述存储单元是寄存器库。
12.根据权利要求1所述的处理器,其中所述存储单元是随机存取存储器(RAM)、同步RAM(SRAM)或同步动态RAM(SDRAM)。
13.一种集成电路,其包括:
地址产生器,其操作以接收包括基址和偏移的相对地址,获得所述基址的基值,将所述基值与所述偏移求和,并提供对应于所述相对地址的绝对地址;以及
存储单元,其操作以接收所述基址并将所述基值提供到所述地址产生器。
14.根据权利要求13所述的集成电路,其中所述地址产生器在存储器存取的第一时钟循环中导出所述绝对地址,且其中在所述存储器存取的第二时钟循环中在所述绝对地址处存取所述存储单元。
15.根据权利要求13所述的集成电路,其中所述地址产生器包括
加法器,其操作以将所述基值与所述偏移求和,以及
锁存器,其耦合到所述加法器且操作以存储所述加法器的输出并提供所述绝对地址。
16.根据权利要求15所述的集成电路,其中所述地址产生器进一步包括
多路复用器,其耦合到所述锁存器且操作以在存储器存取的第一时钟循环中将所述基址提供到所述存储单元,并在所述存储器存取的第二时钟循环中将所述绝对地址提供到所述存储单元。
17.一种处理器,其包括:
多个地址产生器,其操作以接收相对地址并提供绝对地址;以及
多个寄存器库,其耦合到所述多个地址产生器并操作以接收所述绝对地址且在所述绝对地址处提供数据。
18.根据权利要求17所述的处理器,其中所述多个地址产生器包括
至少两个地址产生器,其操作以提供用于至少两个运算数的至少两个绝对地址,以及
一地址产生器,其操作以提供用于结果的绝对地址。
19.根据权利要求17所述的处理器,其中所述多个寄存器库操作以接收基址并提供基值,且其中所述多个地址产生器操作以将所述相对地址的偏移与所述基值求和以获得所述绝对地址。
20.根据权利要求17所述的处理器,其进一步包括:
交叉开关,其操作以将所述多个地址产生器的输出耦合到所述多个寄存器库。
21.根据权利要求17所述的处理器,其进一步包括:
多个算术逻辑单元(ALU),其经配置以对来自所述多个寄存器库的所述数据进行运算。
22.根据权利要求21所述的处理器,其中所述多个ALU经配置以同时对用于多个像素的数据进行运算。
23.根据权利要求21所述的处理器,其进一步包括:
交叉开关,其操作以将来自所述多个寄存器库的所述数据提供到所述多个ALU。
24.根据权利要求17所述的处理器,其中每一寄存器库包括至少两个读取端口,一个读取端口操作以提供用于一个存储器存取的基值且另一读取端口操作以提供用于另一存储器存取的数据。
25.根据权利要求17所述的处理器,其中所述多个寄存器库包括操作以存储像素的属性的四个分量的四个寄存器库,每一寄存器库存储所述四个分量中的一个不同分量。
26.一种图形处理器,其包括:
多个地址产生器,其操作以接收相对地址并提供绝对地址;
多个寄存器库,其耦合到所述多个地址产生器并操作以接收所述绝对地址且在所述绝对地址处提供图形数据;以及
多个算术逻辑单元(ALU),其经配置以对来自所述多个寄存器库的所述图形数据进行运算。
27.根据权利要求26所述的图形处理器,其中所述多个地址产生器包括
至少两个地址产生器,其操作以提供用于所述多个ALU的至少两个运算数的至少两个绝对地址,以及
一地址产生器,其操作以提供用于来自所述多个ALU的结果的绝对地址。
28.一种无线装置,其包括:
图形处理器,其包括多个地址产生器和多个寄存器库,所述多个地址产生器操作以接收相对地址并提供绝对地址,且所述多个寄存器库操作以接收所述绝对地址且在所述绝对地址处提供图形数据;以及
存储器,其耦合到所述图形处理器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/469,347 | 2006-08-31 | ||
US11/469,347 US7805589B2 (en) | 2006-08-31 | 2006-08-31 | Relative address generation |
PCT/US2007/077087 WO2008027951A1 (en) | 2006-08-31 | 2007-08-29 | Relative address generation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101512499A true CN101512499A (zh) | 2009-08-19 |
CN101512499B CN101512499B (zh) | 2012-11-07 |
Family
ID=38800883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800319388A Active CN101512499B (zh) | 2006-08-31 | 2007-08-29 | 相对地址产生 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7805589B2 (zh) |
EP (1) | EP2069940A1 (zh) |
JP (1) | JP5096470B2 (zh) |
KR (1) | KR101076245B1 (zh) |
CN (1) | CN101512499B (zh) |
WO (1) | WO2008027951A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708916A (zh) * | 2012-04-16 | 2012-10-03 | 东莞市泰斗微电子科技有限公司 | 一种地址跳转输出装置和方法 |
CN103810111A (zh) * | 2012-11-08 | 2014-05-21 | 国际商业机器公司 | 有源存储器件中的地址生成的方法及其处理元件 |
WO2015172718A1 (zh) * | 2014-05-14 | 2015-11-19 | 清华大学 | 在存储器中进行多访问的方法、装置和存储系统 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6702949B2 (en) | 1997-10-24 | 2004-03-09 | Microdiffusion, Inc. | Diffuser/emulsifier for aquaculture applications |
US8609148B2 (en) | 2006-10-25 | 2013-12-17 | Revalesio Corporation | Methods of therapeutic treatment of eyes |
US8784897B2 (en) | 2006-10-25 | 2014-07-22 | Revalesio Corporation | Methods of therapeutic treatment of eyes |
US8445546B2 (en) | 2006-10-25 | 2013-05-21 | Revalesio Corporation | Electrokinetically-altered fluids comprising charge-stabilized gas-containing nanostructures |
US8784898B2 (en) | 2006-10-25 | 2014-07-22 | Revalesio Corporation | Methods of wound care and treatment |
AU2007308840C1 (en) | 2006-10-25 | 2014-09-25 | Revalesio Corporation | Methods of therapeutic treatment of eyes and other human tissues using an oxygen-enriched solution |
CA2667614A1 (en) | 2006-10-25 | 2008-09-25 | Revalesio Corporation | Method of wound care and treatment |
AU2007308838B2 (en) | 2006-10-25 | 2014-03-13 | Revalesio Corporation | Mixing device and output fluids of same |
US10125359B2 (en) | 2007-10-25 | 2018-11-13 | Revalesio Corporation | Compositions and methods for treating inflammation |
US9745567B2 (en) | 2008-04-28 | 2017-08-29 | Revalesio Corporation | Compositions and methods for treating multiple sclerosis |
US8452943B2 (en) * | 2007-12-06 | 2013-05-28 | Nec Corporation | Apparatus and method for address generation for array processor and array processor |
US8120608B2 (en) | 2008-04-04 | 2012-02-21 | Via Technologies, Inc. | Constant buffering for a computational core of a programmable graphics processing unit |
US8815292B2 (en) | 2009-04-27 | 2014-08-26 | Revalesio Corporation | Compositions and methods for treating insulin resistance and diabetes mellitus |
US8478946B2 (en) * | 2009-09-08 | 2013-07-02 | Advanced Micro Devices, Inc. | Method and system for local data sharing |
EP2566460A4 (en) | 2010-05-07 | 2015-12-23 | Revalesio Corp | COMPOSITIONS AND METHODS FOR IMPROVED SPORTING PERFORMANCE AND REDUCED RECEPTION TIMES |
JP2013533320A (ja) | 2010-08-12 | 2013-08-22 | レバレジオ コーポレイション | タウオパチーを治療するための組成物および方法 |
US8898433B2 (en) * | 2012-04-26 | 2014-11-25 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Efficient extraction of execution sets from fetch sets |
KR102533229B1 (ko) | 2015-11-27 | 2023-05-17 | 삼성전자주식회사 | 상대 주소를 사용하는 메모리 장치의 접근 방법 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58225422A (ja) | 1982-06-25 | 1983-12-27 | Toshiba Corp | デ−タ制御装置 |
US6070003A (en) * | 1989-11-17 | 2000-05-30 | Texas Instruments Incorporated | System and method of memory access in apparatus having plural processors and plural memories |
JP3199465B2 (ja) * | 1992-07-22 | 2001-08-20 | 株式会社日立製作所 | 情報処理装置 |
EP0580109B1 (en) * | 1992-07-23 | 1997-12-10 | Rockwell International Corporation | Data acces in a RISC digital signal processor |
US5668773A (en) * | 1994-12-23 | 1997-09-16 | Micron Technology, Inc. | Synchronous burst extended data out DRAM |
US6029241A (en) * | 1997-10-28 | 2000-02-22 | Microchip Technology Incorporated | Processor architecture scheme having multiple bank address override sources for supplying address values and method therefor |
US6356994B1 (en) * | 1998-07-09 | 2002-03-12 | Bops, Incorporated | Methods and apparatus for instruction addressing in indirect VLIW processors |
GB2352065B (en) * | 1999-07-14 | 2004-03-03 | Element 14 Ltd | A memory access system |
US6604191B1 (en) | 2000-02-04 | 2003-08-05 | International Business Machines Corporation | Method and apparatus for accelerating instruction fetching for a processor |
JP4914829B2 (ja) * | 2004-05-14 | 2012-04-11 | エヌヴィディア コーポレイション | 低電力プログラマブルプロセッサ |
US7091982B2 (en) * | 2004-05-14 | 2006-08-15 | Nvidia Corporation | Low power programmable processor |
US7404044B2 (en) * | 2004-09-15 | 2008-07-22 | Broadcom Corporation | System and method for data transfer between multiple processors |
-
2006
- 2006-08-31 US US11/469,347 patent/US7805589B2/en active Active
-
2007
- 2007-08-29 JP JP2009526886A patent/JP5096470B2/ja active Active
- 2007-08-29 EP EP07841526A patent/EP2069940A1/en not_active Withdrawn
- 2007-08-29 CN CN2007800319388A patent/CN101512499B/zh active Active
- 2007-08-29 WO PCT/US2007/077087 patent/WO2008027951A1/en active Application Filing
- 2007-08-29 KR KR1020097004667A patent/KR101076245B1/ko active IP Right Grant
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708916A (zh) * | 2012-04-16 | 2012-10-03 | 东莞市泰斗微电子科技有限公司 | 一种地址跳转输出装置和方法 |
CN103810111A (zh) * | 2012-11-08 | 2014-05-21 | 国际商业机器公司 | 有源存储器件中的地址生成的方法及其处理元件 |
CN103810111B (zh) * | 2012-11-08 | 2017-09-12 | 国际商业机器公司 | 有源存储器件中的地址生成的方法及其处理元件 |
WO2015172718A1 (zh) * | 2014-05-14 | 2015-11-19 | 清华大学 | 在存储器中进行多访问的方法、装置和存储系统 |
US10956319B2 (en) | 2014-05-14 | 2021-03-23 | Tsinghua University | Method and apparatus for multiple accesses in memory and storage system, wherein the memory return addresses of vertexes that have not been traversed |
Also Published As
Publication number | Publication date |
---|---|
JP5096470B2 (ja) | 2012-12-12 |
US7805589B2 (en) | 2010-09-28 |
EP2069940A1 (en) | 2009-06-17 |
KR101076245B1 (ko) | 2011-10-26 |
KR20090049060A (ko) | 2009-05-15 |
US20080059756A1 (en) | 2008-03-06 |
JP2010503073A (ja) | 2010-01-28 |
CN101512499B (zh) | 2012-11-07 |
WO2008027951A1 (en) | 2008-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101512499B (zh) | 相对地址产生 | |
US11989640B2 (en) | Scalable neural network processing engine | |
CN101449239B (zh) | 具有算术及初等函数单元的图形处理器 | |
US7091982B2 (en) | Low power programmable processor | |
US8345053B2 (en) | Graphics processors with parallel scheduling and execution of threads | |
EP2126690B1 (en) | On-demand multi-thread multimedia processor | |
US7783860B2 (en) | Load misaligned vector with permute and mask insert | |
EP1759380B1 (en) | Low power programmable processor | |
US20080204461A1 (en) | Auto Software Configurable Register Address Space For Low Power Programmable Processor | |
CN102279818A (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
CN112799599A (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
CN107483178B (zh) | 一种实现安全哈希算法sha3的装置及智能卡 | |
US20090015589A1 (en) | Store Misaligned Vector with Permute | |
TW200617668A (en) | Cache memory management system and method | |
US20050253873A1 (en) | Interleaving of pixels for low power programmable processor | |
KR100980148B1 (ko) | 그래픽 처리 장치 파이프라인에서의 조건부 실행 비트 | |
CN112596881B (zh) | 存储部件及人工智能处理器 | |
CN114692844A (zh) | 数据处理装置、数据处理方法及相关产品 | |
US7142214B2 (en) | Data format for low power programmable processor | |
US20050253855A1 (en) | Statistics instrumentation for low power programmable processor | |
EP3073387A1 (en) | Controlling data flow between processors in a processing system | |
JP2006515446A (ja) | 関連アプリケーションを相互参照するカルテシアンコントローラを有するデータ処理システム | |
Nam et al. | Cost-effective low-power graphics processing unit for handheld devices | |
CN114692840A (zh) | 数据处理装置、数据处理方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |