CN103827818A - Fifo加载指令 - Google Patents
Fifo加载指令 Download PDFInfo
- Publication number
- CN103827818A CN103827818A CN201280047140.3A CN201280047140A CN103827818A CN 103827818 A CN103827818 A CN 103827818A CN 201280047140 A CN201280047140 A CN 201280047140A CN 103827818 A CN103827818 A CN 103827818A
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- project
- carry out
- data
- 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
Images
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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
Abstract
指令识别寄存器和存储器位置。在处理器执行所述指令后,即刻从所述存储器位置加载项目,且执行移位和插入操作以使所述寄存器中的数据移位且将所述项目插入到所述寄存器中。
Description
技术领域
本发明大体上涉及先入先出(FIFO)加载指令。
背景技术
技术的进步已产生更小且更强大的计算装置。举例来说,当前存在多种便携式个人计算装置,包含无线计算装置,例如较小、轻重量且易于由用户携带的便携式无线电话、个人数字助理(PDA)和寻呼装置。更具体来说,便携式无线电话(例如,蜂窝式电话和因特网协议(IP)电话)可经由无线网络传送语音和数据包。此外,许多此类无线电话包含并入其中的其它类型装置。举例来说,无线电话还可包含数字静态相机、数字摄像机、数字记录器和音频文件播放器。而且,此些无线电话可处理可执行指令,其包含可用以接入因特网的软件应用程序,例如网络浏览器应用程序。因而,这些无线电话可包含显著的计算能力。
例如无线电话和数字相机等多媒体装置可包含多媒体数字信号处理器。由多媒体数字信号处理器执行的一个过程是有限脉冲响应(FIR)滤波。在FIR滤波中,滑动窗FIR可以回归方式应用于输入数据流,其中每一窗中的数据经受乘法和累加操作。举例来说,存储在存储器中的输入数据流可经加载,且滑动窗滤波器可应用于数据流的第一部分以获得第一输出。接着,可将数据流移位一值(例如,使窗在剩余数据流上“滑动”),且可将滑动窗应用于数据流的第二部分以获得第二输出。由多媒体信号处理器执行的另一过程是运动估计,其可使每一窗中的数据经受绝对差和累加操作。
当前的FIR和运动估计技术可使用支持以任何字节对准将数据流加载到存储器中的硬件(例如,用以执行从任一字节地址的加载对准操作的定制硬件)。然而,此定制硬件可能昂贵且在小型装置(例如,移动电话)中可能不合意,因为定制硬件占据额外的空间。其它技术可采用多个指令来从存储器加载目标数据流且执行移位操作。举例来说,第一指令可将目标数据流(例如,D7D6…D0)从存储器加载到第一寄存器(例如,RF(0))中,且第二指令可对目标数据流执行左移位操作且对先前存储于第二寄存器(例如,RF(1))中的数据执行右移位操作。随后可将经移位目标数据插入且移位到第三寄存器(例如,RF(2))中。
发明内容
揭示执行数据加载、移位(即,对准)和插入操作的单个指令。举例来说,指令可用以结合其它可执行指令来执行数据加载、移位和插入操作以在电子装置(例如,移动装置和数字相机)处执行FIR滤波和运动估计。举例来说,在FIR滤波期间,可执行乘法和累加操作。作为另一实例,在运动估计期间,可执行绝对差和操作。在一个实施方案中,指令可识别寄存器和存储器位置。寄存器可包含先前存储的数据(例如,表示FIFO缓冲器),且存储器位置可含有待插入到寄存器中的项目(例如,字节、半字或字)。在处理器执行所述指令时,可从所述存储器位置加载项目到寄存器中,且可执行移位和插入操作以使所述寄存器中的先前数据移位且将所述项目插入到所述寄存器中。可在指令的同一执行循环中执行加载操作、移位操作和插入操作。此外,指令可利用极长指令字(VLIW)架构的指令层级并行性。举例来说,单个VLIW包可含有可并行执行的多个此指令。
在特定实施例中,一种设备包含存储器,其存储识别寄存器和存储器位置的指令。在处理器执行所述指令后,即刻从所述存储器位置加载项目,且执行移位和插入操作以使所述寄存器中的数据移位且将所述项目插入到所述寄存器中。
在另一特定实施例中,一种方法包含接收识别寄存器和存储器位置的指令。所述方法包含执行所述指令。执行所述指令包含:从所述存储器位置加载项目;使所述寄存器中的数据移位;以及将所述项目插入到所述寄存器中。
在另一特定实施例中,一种设备包含用于存储识别寄存器和存储器位置的指令的装置。所述设备还包含用于执行指令的装置。所述用于执行所述指令的装置包含:用于从所述存储器位置加载项目的装置;用于使所述寄存器中的数据移位的装置;以及用于将所述项目插入到所述寄存器中的装置。
在另一特定实施例中,一种非暂时性计算机可读媒体包含程序代码,所述程序代码在由处理器执行时致使所述处理器:接收识别寄存器和存储器位置的单个指令;以及执行所述单个指令。执行所述单个指令包含:从所述存储器位置加载项目;使所述寄存器中的数据移位;以及将所述项目插入到所述寄存器中。
由所揭示实施例中的至少一者提供的一个特定优点是应用程序(例如,嵌入式多媒体处理应用程序)的减少的代码大小和较少的执行循环,原因在于使用单个指令来执行数据加载、移位(即,对准)和插入功能性。另一特定优点是较小、较便宜和较不功率密集的电子装置,原因在于所揭示指令能够支持未对准数据而无需使用额外的定制硬件。
在审阅整个申请案之后将明了本发明的其它方面、优点和特征,整个申请案包含以下部分:附图说明、具体实施方式,和权利要求书。
附图说明
图1是说明执行识别寄存器和存储器位置的指令的图;
图2是说明执行识别寄存器和存储器位置的指令的另一图;
图3是包含存储识别寄存器和存储器位置的指令的存储器的系统的特定说明性实施例的图;
图4是执行识别寄存器和存储器位置的指令的方法的特定说明性实施例的流程图;
图5是执行识别寄存器和存储器位置的指令的另一图;以及
图6是包含可操作以执行识别寄存器和存储器位置的指令的处理器的无线装置的特定实施例的框图。
具体实施方式
用于执行数据加载、移位和插入功能性的指令可识别寄存器和存储器位置。当执行指令时,可从存储器位置加载项目(例如,字节、半字或字),且可执行移位和插入操作以使寄存器中的数据移位且将项目插入到寄存器中。可在同一执行循环期间执行加载、移位和插入操作。移位和插入操作可从寄存器移除数据的一部分以为将插入到寄存器中的项目产生空间。经移除部分可表示从先入先出(FIFO)缓冲器的前部“弹出”的数据元素,且新添加到项目可表示正“推入”到FIFO缓冲器的后部中的数据元素。指令可结合其它可执行指令(例如,乘法和累加指令)来执行以对存储在寄存器中的数据执行滤波操作。滤波操作可为有限脉冲响应(FIR)操作(例如,由调制解调器、语音译码器/解码器(CODEC)、音频编解码器、图像处理器或视频编解码器使用)。指令还可结合其它可执行指令(例如,绝对差和指令)来执行以对存储在寄存器中的数据执行运动估计操作。
图1到2描绘识别寄存器和存储器位置的FIFO加载指令的执行的两个实例。参见图1,揭示FIFO加载指令的执行的第一说明性实例,且大体上指定为100。
FIFO加载指令可识别寄存器和存储器位置,其中存储器位置包含将加载到寄存器中的项目。寄存器可为寄存器对或单个寄存器。举例来说,如图1中说明,FIFO加载指令可为“R1:0=MEM_FIFO(Rs)”,其中‘MEM_FIFO’是FIFO加载指令的操作码,‘Rs’是存储器102中存储项目150的地址的寄存器,且‘R1’是其中将加载项目150的包含数据144、143、142和141(例如,X4X3X2X1)的寄存器140。寄存器140可相对于数据141到144作为FIFO缓冲器来操作(例如,数据X1141可位于FIFO缓冲器的前部,且数据X4可位于FIFO缓冲器的后部)。
在特定实施例中,项目150可为字节、半字或字。FIFO加载指令也可指定项目是否为字节、半字或字。应注意,项目可为任何其它长度。举例来说,举例来说,“MEMB_FIFO”操作码可指示项目150为字节(例如,指令可为“R0=MEMB_FIFO(Rs)”),“MEMH_FIFO”操作码可指示项目150为半字(例如,指令可为“R1=MEMH_FIFO(Rs)”),且“MEMW_FIFO”操作码可指示项目150为字。指令可由处理器的执行单元或加载/存储单元结合其它可执行指令来执行以对寄存器140中的数据144到141执行滤波操作。滤波操作可用以执行(例如,移动装置或数码相机中的视频数据的)有限脉冲响应滤波或运动估计。举例来说,指令可结合其它可执行指令使用以并行地执行视频帧的多个区或多个视频帧的运动估计,如参见图3进一步描述。
在操作期间,识别寄存器140和项目150的存储器位置的FIFO加载指令可从存储器102(例如,随机存取存储器(RAM))检索,且可由处理器的执行单元或加载/存储单元(例如,加载硬件单元或加载对准器单元)执行。在执行时,FIFO加载指令可致使项目150从存储器位置加载,如所说明。另外,可执行移位和插入操作以使寄存器140中的数据141到144移位且将项目150插入到寄存器140中。在特定实施例中,从存储器位置加载项目150以及移位和插入操作可在处理器的同一执行循环期间执行。
如图1中说明,在从存储器位置加载项目150之后,寄存器140中的数据141到144可右移位,且项目150可插入于存储在寄存器140中的FIFO缓冲器的后部。举例来说,寄存器140中的数据144到141(即,X4X3X2X1)可右移位,从而致使从寄存器140移除数据141(即,X1),且项目150可插入到寄存器140中,如图1中所示。因此,图1的MEM_FIFO指令可通过使用单个指令来启用数据加载、移位和插入操作。
参见图2,揭示FIFO加载指令“R1:0=MEM_FIFO(Rs)”的执行的第二说明性实例,且大体上指定为200。图1描绘为将项目150插入到寄存器140的左侧(例如,最高有效部分)中腾出空间的右移位操作,而图2描绘为将项目150插入到寄存器140的右侧(例如,最低有效部分)中腾出空间的左移位操作。在FIFO加载指令的执行后,可即刻从存储器位置加载项目150,可执行左移位操作以使寄存器140中的数据141到144移位,且可执行插入操作以将项目150插入到寄存器140中。因此,所揭示FIFO加载指令可与寄存器中从左到右以及从右到左两个方向上定向的FIFO缓冲器一起使用。
参见图3,揭示可操作以存储和处理包含多个FIFO加载指令351、352的指令包(例如,VLIW指令包350)的系统的特定说明性实施例,且大体上指定为300。
系统300可包含存储指令包350的存储器102。存储器102可经由总线接口308耦合到指令高速缓冲存储器310。第一FIFO加载指令351可识别第一寄存器(例如,指定为R1的寄存器140)以及第一项目150(例如,指定为项目1)的第一存储器位置。第二FIFO加载指令352可识别第二寄存器(例如,指定为R2的寄存器340)以及第二项目360(例如,指定为项目2)的第二存储器位置。项目150、360可存储在存储器102处和/或数据高速缓冲存储器312处。举例来说,图3说明第一项目150存储在存储器102中,且第二项目360存储在数据高速缓冲存储器312和存储器102两者中。第一寄存器140和第二寄存器340可为通用寄存器堆326的部分。在特定实施例中,系统300的全部或一部分可集成到处理器中。或者,存储器102和总线330可在处理器外部。
存储器102可经由总线接口308将指令包350传输到指令高速缓冲存储器310。数据高速缓冲存储器312也可经由总线接口308耦合到存储器102。在特定实施例中,存储器102可由处理器(例如,数字信号处理器)存取,所述处理器可操作以执行对数据的滤波操作、对数据的有限脉冲响应操作、视频数据的运动估计,或其任一组合。处理器可执行FIFO加载指令351和352以执行数据加载、移位和插入操作。
指令高速缓冲存储器310可经由总线311耦合到定序器314。定序器314可接收通用中断316,其可从中断寄存器(未图示)检索。在特定实施例中,指令高速缓冲存储器310经由多个当前指令寄存器(未图示)耦合到定序器314,所述当前指令寄存器可耦合到总线311且与处理器300的特定线程(例如,硬件线程)相关联。在特定实施例中,处理器300可为包含六(6)个线程的交错多线程处理器。
在特定实施例中,总线311可为一百二十八位(128位)总线,且定序器314可经配置以经由指令包(例如,VLIW指令包350)从存储器102检索指令,包含各自具有三十二(32)位长度的多个FIFO加载指令(例如,第一FIFO加载指令351和第二FIFO加载指令352)。定序器314可耦合到第一加载/存储单元318、第二加载/存储单元320、第一指令执行单元322,以及第二指令执行单元324。应注意,可存在比所展示情形少或多的加载/存储单元和指令执行单元。每一单元318到324可包含一个或一个以上加载对准器单元或加载硬件单元,其可操作以执行FIFO加载指令。每一单元318到324可经由第一总线328耦合到通用寄存器堆326。通用寄存器堆326还可经由第二总线330耦合到定序器314、数据高速缓冲存储器312和存储器302。通用寄存器堆326可包含第一寄存器140和第二寄存器340。
系统300还可包含监督器控制寄存器332和全局控制寄存器336,用以存储可由定序器314内的控制逻辑存取以确定是否接受中断(例如,通用中断316)且控制指令执行的位。
在特定实施例中,加载/存储单元318到320中的一者(例如,第一加载/存储单元318)可执行第一FIFO加载指令351。在第一FIFO加载指令351的执行后,可即刻从存储器102加载第一项目150,且可执行移位和插入操作以使第一寄存器140中的数据移位,且将第一项目150插入到第一寄存器140中。根据数据高速缓冲存储原理,第一项目150也可存储在数据高速缓冲存储器312中。另外,加载/存储单元318到320中的另一者(例如,第二加载/存储单元320)可执行第二FIFO加载指令352。在第二FIFO加载指令352的执行后,可即刻从数据高速缓冲存储器312加载第二项目360,且可执行移位和插入操作以使第二寄存器340中的数据移位,且将第二项目360插入到第二寄存器340中。在特定实施例中,第一FIFO加载指令351和第二FIFO加载指令352可在同一执行循环期间由加载/存储单元318和加载/存储单元320并行地执行。为了说明,在同一执行循环期间,可(例如,从存储器102和数据高速缓冲存储器312)加载项目150和360,可使寄存器140和340中的数据移位,且可将项目150和360插入到寄存器140和340中。其它指令也可与FIFO加载指令351、352并行执行。举例来说,乘法指令、加法指令、乘法和加法指令以及绝对差和指令可与FIFO加载指令351、352并行执行。为了说明,单元318到324中的一者或一者以上可执行FIFO加载指令,而单元318到324中的另一者执行乘法指令、加法指令、乘法和加法指令或绝对差和指令。
因此,图3的系统300可使得能够将多个FIFO加载指令包化为单个VLIW包,其中此些指令可结合执行视频对象的运动估计来使用。举例来说,将加载、移位和插入操作囊封到单个指令中可使得处理器能够针对视频帧的多个区或针对多个视频帧并行地执行运动估计。为了说明,VLIW指令包350中的指令351、352中的每一者可表示针对视频帧的不同区的滤波操作。视频数据的此并行处理可得到多媒体应用的改善性能。
参见图4,描绘处理识别寄存器和存储器位置的指令的方法的特定说明性实施例的流程图,且大体上指定为400。在说明性实施例中,方法400可在图3的系统300处执行且可参见图1到2来说明。
方法400可包含在410处接收识别寄存器和项目的存储器位置的指令。举例来说,指令可存储在图1或图2的存储器102处和/或图3的指令高速缓冲存储器310处。存储器可为基于寄存器的存储器、随机存取存储器(RAM)、另一类型的存储器,或其任一组合。项目可为字节、半字或字。举例来说,如图3中说明,包含第一FIFO加载指令351和第二FIFO加载指令352的VLIW指令包350可在处理器或其组件(例如,指令高速缓冲存储器310)处接收。或者,可接收仅包含单个FIFO加载指令的指令包。
方法400还可包含在420处执行指令。举例来说,参见图3,第一FIFO加载指令351可由第一加载/存储单元318执行,且第二FIFO加载指令352可由第二加载/存储单元320执行。第一FIFO加载指令351可与执行第二FIFO加载指令352并行地且在同一时钟循环期间执行。另外,FIFO加载指令351到352中的一者或两者可与执行乘法指令或绝对差和指令并行地执行。图4的方法400可因此使得能够在单个指令包中囊封和处理多个FIFO加载指令,这可导致较密集的视频处理代码。
执行指令可包含在422处从存储器位置加载项目。举例来说,在图3中,执行指令包350可包含从存储器102加载第一项目150和从数据高速缓冲存储器312加载第二项目360。执行指令还可包含在424处使寄存器中的数据移位。在特定实施例中,所述移位是右移位操作,如图1中说明。在另一特定实施例中,所述移位是左移位操作,如图2中说明。在另一特定实施例中,执行第一FIFO加载指令351可包含执行右移位操作,且执行第二FIFO加载指令352可包含执行左移位操作(或反之亦然)。举例来说,在图3中,第一寄存器140中的数据可左移位,且第二寄存器340中的数据可右移位。因此,寄存器140、340中的数据可在相同方向上或在不同方向上移位。
执行指令可进一步包含在426处将项目插入到寄存器中。举例来说,在图3中,第一项目150可插入到第一寄存器140中,且第二项目360可插入到第二寄存器340中。
图1到4中描述的实施例可涉及将数据移位出寄存器和将数据加载到同一寄存器中。或者,可使用多寄存器实施方案。举例来说,图5说明使用多个寄存器执行FIFO加载指令的实施例,且大体上指定为500。
为了说明,FIFO缓冲器的数据X4X3X2X1144到141可存储在第一寄存器510中。在FIFO加载指令的执行期间,数据X4X3X2X1144到141可加载到移位器530中,且移位器530的输出可提供到多路复用器540。多路复用器540还可接收将从存储器102加载到FIFO缓冲器中的项目150。在特定实施例中,在数据加载过程期间可按需要对项目150进行对准、复制、补零和/或符号延伸。多路复用器540的输出可存储在第二寄存器520中,如图5中说明。因此,FIFO加载指令可用以在源寄存器和目的地寄存器不同时执行加载、移位和插入操作。
参见图6,描绘包含存储识别寄存器和存储器位置的FIFO加载指令的存储器的无线装置的特定说明性实施例的框图,且大体上指定为600。装置600包含耦合到存储器102的处理器,例如数字信号处理器(DSP)664。在特定实施例中,存储器102存储且可传输可由DSP664执行的指令,例如FIFO加载指令351。存储器102还可存储待加载的数据,例如项目150。DSP可包含表示FIFO缓冲器的寄存器140,其存储数据144到141(即,“X4…X1”)。在FIFO加载指令351的执行后,可即刻从存储器102中的存储器位置加载项目150,且可执行移位和插入操作以使寄存器140中的数据144到141移位,且将项目150插入到寄存器140中。举例来说,在图6中,可对数据144到141执行左移位操作,从而导致从寄存器140移除数据X4144,且可将项目150插入到寄存器140中处于寄存器140的最低有效部分。或者,可使寄存器140中的数据144到141右移位(未图示),从而导致从寄存器140移除数据X1141,且可将项目150插入到寄存器140中处于寄存器140的最高有效部分。
图6还展示耦合到DSP664和显示器628的显示器控制器626。译码器/解码器(CODEC)634(例如,音频和/或语音编解码器)可耦合到DSP664。举例来说,编解码器634可致使FIFO加载指令351的执行,作为编码或解码过程的部分。例如显示器控制器626(可包含视频编解码器和/或图像处理器)和无线控制器640(可包含调制解调器)等其它组件也可在信号处理期间致使FIFO加载指令351的执行。扬声器636和麦克风638可耦合到编解码器634。图6还指示无线控制器640可耦合到无线天线642。在特定实施例中,DSP664、显示器控制器626、存储器632、编解码器634以及无线控制器640包含在系统级封装或芯片上系统装置622中。
在特定实施例中,输入装置630和电源644耦合到芯片上系统装置622。而且,在特定实施例中,如图6中说明,显示器628、输入装置630、扬声器636、麦克风638、无线天线642以及电源644在芯片上系统装置622的外部。然而,显示器628、输入装置630、扬声器636、麦克风638、无线天线642以及电源644中的每一者可耦合到芯片上系统装置622的组件,例如接口或控制器。
应注意,虽然图6描绘无线通信装置,但DSP664和存储器632也可集成到机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元或计算机中。处理器(例如,DSP664或包含图3的加载/存储单元318到320中的一者或一者以上的处理器)也可集成到此装置中。
结合所描述实施例,揭示一种设备,其包含用于存储识别寄存器和存储器位置的指令的装置。举例来说,用于存储的装置可为图1到3和图6的存储器102、图3的指令高速缓冲存储器310、经配置以存储指令的一个或一个以上其它装置,或其任一组合。
所述设备还可包含用于执行指令的装置。举例来说,用于执行的装置可包含以下各项中的一者或一者以上:图3的单元318、320、322和324,图5的移位器530,图5的多路复用器540,图6的DSP664,加载硬件单元,加载对准器单元,经配置以执行指令的一个或一个以上其它装置,或其任一组合。
所述设备可进一步包含用于从存储器位置加载项目的装置。举例来说,用于加载的装置可为以下各项中的一者或一者以上:图3的单元318到324,加载硬件单元,加载对准器单元,经配置以从存储器加载项目的一个或一个以上其它装置,或其任一组合。
所述设备可包含用于使寄存器中的数据移位的装置。举例来说,用于移位的装置可为以下各项中的一者或一者以上:图3的单元318到324,加载硬件单元,加载对准器单元,数据移位单元,经配置以移位数据的一个或一个以上其它装置,或其任一组合。
所述设备还可包含用于将项目插入到寄存器中的装置。举例来说,用于插入的装置可为以下各项中的一者或一者以上:图3的单元318到324,图5的移位器530,加载硬件单元,加载对准器单元,经配置以加载数据的一个或一个以上其它装置,或其任一组合。
所述设备可进一步包含用于与执行所述指令并行地执行第二指令的装置,其中所述第二指令识别第二寄存器和第二存储器位置。举例来说,用于执行的装置可包含以下各项中的一者或一者以上:图3的单元318到324,图5的移位器530,图5的多路复用器540,图6的DSP664,加载硬件单元,加载对准器单元,经配置以与第一指令并行地执行第二指令的一个或一个以上其它装置,或其任一组合。
所属领域的技术人员将进一步了解,结合本文所揭示的实施例描述的各种说明性逻辑块、配置、模块、电路和算法步骤可实施为电子硬件、计算机软件或所述两者的组合。上文已大体上在其功能性方面描述了各种说明性组件、块、配置、模块、电路和步骤。将此类功能性实施为硬件还是软件取决于特定应用和对整个系统施加的设计约束。熟练的技术人员针对每一特定应用可以不同方式实施所描述的功能性,但不应将此类实施方案决策解释为造成与本发明的范围的脱离。
结合本文所揭示的实施例描述的方法或算法的步骤可直接以硬件、以由处理器执行的软件模块或以所述两者的组合来实施。软件模块可驻留在随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可装卸式盘、压缩光盘只读存储器(CD-ROM)或此项技术中已知的任何其它形式的存储媒体中。示范性非暂时性(例如,有形)存储媒体耦合到处理器,使得处理器可从存储媒体读取信息和向存储媒体写入信息。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻留在专用集成电路(ASIC)中。ASIC可驻留在计算装置或用户终端中。在替代方案中,处理器和存储媒体可作为离散组件驻留在计算装置或用户终端中。
提供对所揭示实施例的先前描述是为了使得所属领域的技术人员能够制作或使用所揭示实施例。所属领域的技术人员将容易了解对这些实施例的各种修改,且在不脱离本发明的范围的情况下,本文所界定的原理可适用于其它实施例。因此,本发明既定不限于本文展示的实施例,而是应被赋予与所附权利要求书界定的原理和新颖特征一致的可能的最广范围。
Claims (22)
1.一种设备,其包括:
存储器,其存储识别寄存器和存储器位置的指令,其中在处理器执行所述指令后,即刻从所述存储器位置加载项目,且执行移位和插入操作以使所述寄存器中的数据移位且将所述项目插入到所述寄存器中。
2.根据权利要求1所述的设备,其中从所述存储器位置加载所述项目以及所述移位和插入操作是在同一执行循环中执行。
3.根据权利要求1所述的设备,其中所述项目是字节、半字或字。
4.根据权利要求1所述的设备,其中使所述数据移位字节、半字或字。
5.根据权利要求1所述的设备,其中所述移位和插入操作由加载对准器单元执行。
6.根据权利要求1所述的设备,其中所述移位和插入操作用来自所述存储器位置的数据部分替换来自所述寄存器的数据部分。
7.根据权利要求1所述的设备,其中所述指令的所述执行由所述处理器的加载硬件单元执行。
8.根据权利要求1所述的设备,其进一步包括包含所述指令和第二指令的极长指令字VLIW包。
9.根据权利要求8所述的设备,其中所述第二指令识别第二寄存器和第二存储器位置,其中在所述处理器执行所述第二指令后,即刻从所述第二存储器位置加载第二项目,且执行移位和插入操作以使所述第二寄存器中的数据移位且将所述第二项目插入到所述第二寄存器中,且其中所述第二指令与所述指令的执行并行地执行。
10.根据权利要求1所述的设备,其中所述指令可结合其它可执行指令而执行以对所述数据执行滤波操作。
11.根据权利要求10所述的设备,其中所述滤波操作是有限脉冲响应FIR操作。
12.根据权利要求1所述的设备,其中所述指令可结合其它可执行指令而执行以执行视频数据的运动估计。
13.一种方法,其包括:
接收识别寄存器和存储器位置的指令;以及
执行所述指令,其中执行所述指令包括:
从所述存储器位置加载项目;
使所述寄存器中的数据移位;以及
将所述项目插入到所述寄存器中。
14.根据权利要求13所述的方法,其中从所述存储器加载所述项目、使所述寄存器中的所述数据移位以及将所述项目插入到所述寄存器中是在同一执行循环中执行。
15.根据权利要求13所述的方法,其进一步包括:
接收识别第二寄存器和第二存储器位置的第二指令;以及
与所述指令的执行并行地执行所述第二指令,其中执行所述第二指令包括:
从所述第二存储器位置加载第二项目;
使所述第二寄存器中的数据移位;以及
将所述第二项目插入到所述第二寄存器中。
16.根据权利要求13所述的方法,其进一步包括与执行所述指令并行地执行乘法指令和加法指令。
17.根据权利要求13所述的方法,其进一步包括与执行所述指令并行地执行绝对差和操作。
18.根据权利要求13所述的方法,其中所述寄存器作为先入先出FIFO缓冲器来操作。
19.一种设备,其包括:
用于存储识别寄存器和存储器位置的指令的装置;以及
用于执行所述指令的装置,其中所述用于执行所述指令的装置包括:
用于从所述存储器位置加载项目的装置;
用于使所述寄存器中的数据移位的装置;以及
用于将所述项目插入到所述寄存器中的装置。
20.根据权利要求19所述的设备,其进一步包括用于与执行所述指令并行地执行第二指令的装置,其中所述第二指令识别第二寄存器和第二存储器位置。
21.一种包含程序代码的非暂时性计算机可读媒体,所述程序代码在由处理器执行时致使所述处理器:
接收识别寄存器和存储器位置的单个指令;以及
执行所述单个指令,其中执行所述单个指令包含:
从所述存储器位置加载项目;
使所述寄存器中的数据移位;以及
将所述项目插入到所述寄存器中。
22.根据权利要求21所述的非暂时性计算机可读媒体,其中从所述存储器位置加载所述项目、使所述寄存器中的所述数据移位以及将所述项目插入到所述寄存器中是在同一执行循环中执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/249,284 US9823928B2 (en) | 2011-09-30 | 2011-09-30 | FIFO load instruction |
US13/249,284 | 2011-09-30 | ||
PCT/US2012/058181 WO2013049765A1 (en) | 2011-09-30 | 2012-09-30 | Fifo load instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103827818A true CN103827818A (zh) | 2014-05-28 |
CN103827818B CN103827818B (zh) | 2017-06-13 |
Family
ID=47146655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280047140.3A Expired - Fee Related CN103827818B (zh) | 2011-09-30 | 2012-09-30 | Fifo加载指令 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9823928B2 (zh) |
EP (1) | EP2761434B1 (zh) |
JP (2) | JP6022581B2 (zh) |
KR (1) | KR101697548B1 (zh) |
CN (1) | CN103827818B (zh) |
IN (1) | IN2014CN01835A (zh) |
WO (1) | WO2013049765A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105892993A (zh) * | 2016-03-28 | 2016-08-24 | 龙芯中科技术有限公司 | 基于提取插入操作的重组方法、装置及微处理器 |
CN110199259A (zh) * | 2017-01-19 | 2019-09-03 | 国际商业机器公司 | 加载逻辑和移位保护指令 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9329834B2 (en) * | 2012-01-10 | 2016-05-03 | Intel Corporation | Intelligent parametric scratchap memory architecture |
JP2016019708A (ja) * | 2014-07-16 | 2016-02-04 | 浜松ホトニクス株式会社 | 固体撮像装置、x線撮像システムおよび固体撮像装置駆動方法 |
CN104597805A (zh) * | 2014-12-09 | 2015-05-06 | 北京临近空间飞艇技术开发有限公司 | 一种基于fifo实现循环移位寄存器的系统及方法 |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
US10579377B2 (en) | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10733016B1 (en) | 2019-04-26 | 2020-08-04 | Google Llc | Optimizing hardware FIFO instructions |
US11010099B1 (en) * | 2019-11-19 | 2021-05-18 | Western Digital Technologies, Inc. | Data storage device executing access commands based on leapfrog sort |
US11237827B2 (en) * | 2019-11-26 | 2022-02-01 | Advanced Micro Devices, Inc. | Arithemetic logic unit register sequencing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120889A1 (en) * | 2001-12-21 | 2003-06-26 | Patrice Roussel | Unaligned memory operands |
US20080034189A1 (en) * | 2006-08-02 | 2008-02-07 | Lucian Codrescu | Method and system to perform shifting and rounding operations within a microprocessor |
CN101482811A (zh) * | 2008-01-09 | 2009-07-15 | 模拟装置公司 | 用于增强的计算能力的处理器体系结构 |
US20100174883A1 (en) * | 2008-01-09 | 2010-07-08 | Boris Lerner | Processor architectures for enhanced computational capability and low latency |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL136896C (zh) | 1964-10-07 | |||
JPS625441A (ja) | 1985-02-18 | 1987-01-12 | Nec Corp | 情報処理装置 |
US5781457A (en) * | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
JPH07295882A (ja) | 1994-04-22 | 1995-11-10 | Hitachi Ltd | 情報処理装置、及び、情報処理システム |
JPH0927030A (ja) | 1995-07-12 | 1997-01-28 | Fujitsu Ltd | 画像処理装置 |
US5991531A (en) * | 1997-02-24 | 1999-11-23 | Samsung Electronics Co., Ltd. | Scalable width vector processor architecture for efficient emulation |
US6334176B1 (en) * | 1998-04-17 | 2001-12-25 | Motorola, Inc. | Method and apparatus for generating an alignment control vector |
US6490673B1 (en) | 1998-11-27 | 2002-12-03 | Matsushita Electric Industrial Co., Ltd | Processor, compiling apparatus, and compile program recorded on a recording medium |
FI20010924A (fi) | 2001-05-03 | 2002-11-04 | Nokia Corp | Mikroprosessorin muistinkäsittely |
US7272622B2 (en) * | 2001-10-29 | 2007-09-18 | Intel Corporation | Method and apparatus for parallel shift right merge of data |
US7685212B2 (en) | 2001-10-29 | 2010-03-23 | Intel Corporation | Fast full search motion estimation with SIMD merge instruction |
US20110087859A1 (en) * | 2002-02-04 | 2011-04-14 | Mimar Tibet | System cycle loading and storing of misaligned vector elements in a simd processor |
US7376812B1 (en) * | 2002-05-13 | 2008-05-20 | Tensilica, Inc. | Vector co-processor for configurable and extensible processor architecture |
US7126991B1 (en) | 2003-02-03 | 2006-10-24 | Tibet MIMAR | Method for programmable motion estimation in a SIMD processor |
US7275147B2 (en) | 2003-03-31 | 2007-09-25 | Hitachi, Ltd. | Method and apparatus for data alignment and parsing in SIMD computer architecture |
GB2409059B (en) | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2411978B (en) * | 2004-03-10 | 2007-04-04 | Advanced Risc Mach Ltd | Inserting bits within a data word |
US7475392B2 (en) * | 2004-06-07 | 2009-01-06 | International Business Machines Corporation | SIMD code generation for loops with mixed data lengths |
JP2006004042A (ja) * | 2004-06-16 | 2006-01-05 | Renesas Technology Corp | データ処理装置 |
US7315937B2 (en) * | 2004-10-01 | 2008-01-01 | Mips Technologies, Inc. | Microprocessor instructions for efficient bit stream extractions |
US20070052557A1 (en) * | 2005-09-02 | 2007-03-08 | Thomas Magdeburger | Shared memory and shared multiplier programmable digital-filter implementation |
CA2642022A1 (en) | 2006-02-03 | 2007-08-16 | Russell H. Fish, Iii | Thread optimized multiprocessor architecture |
US8984256B2 (en) | 2006-02-03 | 2015-03-17 | Russell Fish | Thread optimized multiprocessor architecture |
US7624251B2 (en) * | 2006-11-01 | 2009-11-24 | Apple Inc. | Instructions for efficiently accessing unaligned partial vectors |
JP2008258762A (ja) | 2007-04-02 | 2008-10-23 | Toshiba Corp | ディジタル信号受信装置 |
US8145804B2 (en) * | 2009-09-21 | 2012-03-27 | Kabushiki Kaisha Toshiba | Systems and methods for transferring data to maintain preferred slot positions in a bi-endian processor |
US9137737B2 (en) | 2011-08-29 | 2015-09-15 | Qualcomm Incorporated | Systems and methods for monitoring of background application events |
EP2764734A1 (en) * | 2011-10-05 | 2014-08-13 | Qualcomm Incorporated | Systems and methods for management of background application events |
-
2011
- 2011-09-30 US US13/249,284 patent/US9823928B2/en active Active
-
2012
- 2012-09-30 JP JP2014533457A patent/JP6022581B2/ja not_active Expired - Fee Related
- 2012-09-30 IN IN1835CHN2014 patent/IN2014CN01835A/en unknown
- 2012-09-30 EP EP12783712.8A patent/EP2761434B1/en not_active Not-in-force
- 2012-09-30 CN CN201280047140.3A patent/CN103827818B/zh not_active Expired - Fee Related
- 2012-09-30 KR KR1020147011807A patent/KR101697548B1/ko active IP Right Grant
- 2012-09-30 WO PCT/US2012/058181 patent/WO2013049765A1/en active Application Filing
-
2016
- 2016-05-25 JP JP2016104167A patent/JP2016192212A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120889A1 (en) * | 2001-12-21 | 2003-06-26 | Patrice Roussel | Unaligned memory operands |
US20080034189A1 (en) * | 2006-08-02 | 2008-02-07 | Lucian Codrescu | Method and system to perform shifting and rounding operations within a microprocessor |
CN101482811A (zh) * | 2008-01-09 | 2009-07-15 | 模拟装置公司 | 用于增强的计算能力的处理器体系结构 |
US20100174883A1 (en) * | 2008-01-09 | 2010-07-08 | Boris Lerner | Processor architectures for enhanced computational capability and low latency |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105892993A (zh) * | 2016-03-28 | 2016-08-24 | 龙芯中科技术有限公司 | 基于提取插入操作的重组方法、装置及微处理器 |
CN105892993B (zh) * | 2016-03-28 | 2019-02-15 | 龙芯中科技术有限公司 | 基于提取插入操作的重组方法、装置及微处理器 |
CN110199259A (zh) * | 2017-01-19 | 2019-09-03 | 国际商业机器公司 | 加载逻辑和移位保护指令 |
TWI701551B (zh) * | 2017-01-19 | 2020-08-11 | 美商萬國商業機器公司 | 用於於虛擬化環境中保存/復原受防護之儲存器控制之電腦程式產品、電腦實施方法及電腦系統 |
CN110199259B (zh) * | 2017-01-19 | 2023-04-25 | 国际商业机器公司 | 用于促进计算环境中的处理的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
IN2014CN01835A (zh) | 2015-09-04 |
EP2761434A1 (en) | 2014-08-06 |
WO2013049765A1 (en) | 2013-04-04 |
KR20140073553A (ko) | 2014-06-16 |
CN103827818B (zh) | 2017-06-13 |
JP2014532231A (ja) | 2014-12-04 |
US20130086360A1 (en) | 2013-04-04 |
JP6022581B2 (ja) | 2016-11-09 |
JP2016192212A (ja) | 2016-11-10 |
KR101697548B1 (ko) | 2017-01-18 |
US9823928B2 (en) | 2017-11-21 |
EP2761434B1 (en) | 2017-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103827818A (zh) | Fifo加载指令 | |
CN102971720B (zh) | 管理翻译旁视缓冲器的系统和方法 | |
CN101821712B (zh) | 在多级数据处理管线中执行指令的系统和方法 | |
CN105700852B (zh) | 用于在交错的多线程环境中操作的数字信号处理器的寄存器堆 | |
US20150331799A1 (en) | Pre-decoding analysis based configuration information cache management method and system | |
EP2734918B1 (en) | Table call instruction for frequently called functions | |
EP2742419B1 (en) | Data storage for voltage domain crossings | |
CN102160031A (zh) | 用以执行线性反馈移位指令的系统及方法 | |
CN102822794B (zh) | 处理阶层式极长指令包的系统和方法 | |
CN102713875B (zh) | 包含组合的选择和数据对齐或数据复制的多级多路复用运算 | |
CN102263562B (zh) | 一种码流数据的读取移除方法和装置 | |
JP4674709B2 (ja) | 可変長フレームバッファ装置および可変長フレーム境界検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170613 Termination date: 20210930 |