[go: up one dir, main page]

CN105027076A - 相加-比较-选择指令 - Google Patents

相加-比较-选择指令 Download PDF

Info

Publication number
CN105027076A
CN105027076A CN201480012927.5A CN201480012927A CN105027076A CN 105027076 A CN105027076 A CN 105027076A CN 201480012927 A CN201480012927 A CN 201480012927A CN 105027076 A CN105027076 A CN 105027076A
Authority
CN
China
Prior art keywords
result
register
value
instruction
vector
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
Application number
CN201480012927.5A
Other languages
English (en)
Other versions
CN105027076B (zh
Inventor
尼科·德劳伦蒂斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN105027076A publication Critical patent/CN105027076A/zh
Application granted granted Critical
Publication of CN105027076B publication Critical patent/CN105027076B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4107Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

一种设备包含存储识别第一寄存器、第二寄存器及第三寄存器的指令的存储器。在由处理器执行所述指令时,由所述处理器执行向量加法运算以将来自所述第一寄存器的第一值与来自所述第二寄存器的第二值相加。在执行所述指令时还执行向量减法运算以从来自所述第三寄存器的第三值减去所述第二值。在执行所述指令时还执行向量比较操作以将所述向量加法运算的结果与所述向量减法运算的结果进行比较。

Description

相加-比较-选择指令
相关申请案的交叉参考
本申请案主张2013年3月15日申请的共同拥有的第13/841,878号美国非临时专利申请案的优先权,所述申请案的内容以全文引用的方式明确地并入本文中。
技术领域
本发明通常涉及一种相加-比较-选择指令。
背景技术
技术的进步已产生更小且更强大的计算装置。举例来说,当前存在多种便携式个人计算装置,包含无线计算装置,例如较小、轻重量且易于由用户携带的便携式无线电话、个人数字助理(PDA)和寻呼装置。更具体来说,便携式无线电话(例如,蜂窝式电话和因特网协议(IP)电话)可经由无线网络传递语音和数据包。此外,许多此类无线电话包含并入其中的其它类型装置。举例来说,无线电话还可包含数字静态相机、数字视频相机、数字记录器和音频文件播放器。而且,所述无线电话可处理可执行指令,其包括可用以接入因特网的软件应用程序,例如,网页浏览器应用程序。因而,这些无线电话可包括显著的计算能力。
执行例如音频或视频解码等多媒体处理的无线电话通常可使用例如Viterbi算法等算法来解码经编码的信号。举例来说,可在多个编码级处编码(例如,卷积编码)二进制信号以产生经编码二进制信号。在每一编码级处,编码操作可改变二进制信号的状态(S)。二进制信号的状态可对应于在特定时间(k)(例如,在特定编码级处)在无线电话内的编码器的状态。举例来说,可对二进制信号执行第一编码操作以在第一编码级期间产生第一状态,且可对第一状态执行第二编码操作以在第二编码级期间产生第二状态等。在编码操作完成之后产生经编码二进制信号。连续状态的次序可产生对应于经编码二进制信号的独特路径(即,Viterbi路径)。
无线电话可通过将连续状态追溯到二进制信号来恢复用以解码经编码的二进制信号的路径。举例来说,无线电话可从经编码的二进制信号(例如,与经编码的二进制信号相关联的状态)将在编码期间产生的先前状态(例如,早先状态)追溯到二进制信号以重建路径。可在每一到达状态(即,“当前”状态)处确定路径的先前状态,且可重复过程直到恢复二进制信号(例如,将路径追溯到二进制信号)为止。此过程可被称为卷积解码。Viterbi算法可用以解码经编码的二进制信号。举例来说,在解码器处,无线电话可使用Viterbi算法从路径的到达状态确定路径的先前状态,且重复所述过程直到恢复二进制信号为止。可基于用以恢复到达状态的路径度量来确定先前状态。然而,在解码级处确定先前状态可利用多个指令。使用多个指令在解码级期间确定先前状态可增加处理时间。
发明内容
揭示在解码级期间使用Viterbi算法确定先前状态的单个指令。举例来说,可使用Viterbi算法找到状态的最可能序列(即,Viterbi路径)。Viterbi路径可处于其中存在多个状态的状态的网格中,其中多个路径通向每一状态。确定状态之间的不同转变的可能性以确定状态之间的哪一转变最有可能(例如,确定“幸存者”路径)。指令可用以结合其它可执行指令来执行相加、比较及选择操作以在电子装置(例如,移动装置)处执行卷积解码。举例来说,指令可确定用以从第一状态(2S)(例如,偶数状态)到达到达状态(S)的度量的和及用以从第二状态(2S+1)(例如,奇数状态)到达相同到达状态(S)的度量的差。指令还可对所述和与所述差进行比较以确定哪一计算对应于较大值。可选择对应于较大值的计算来预测先前状态(例如,预测幸存者路径)。在由处理器执行指令时,度量的选定计算可加载到寄存器,且在下一解码级期间使用。可按指令的相同执行循环来执行相加操作、比较操作及选择操作。此外,指令可利用极长指令字(VLIW)架构的指令级并行。举例来说,单个VLIW包可含有可并行执行的多个此类指令。
在特定实施例中,一种设备包含存储识别第一寄存器、第二寄存器及第三寄存器的指令的存储器。在由处理器执行指令时,由处理器执行向量加法运算以将来自第一寄存器的第一值与来自第二寄存器的第二值相加。在执行指令时还执行向量减法运算以从来自第三寄存器的第三值减去第二值。在执行指令时还执行向量比较操作以将向量加法运算的结果与向量减法运算的结果进行比较。
在另一特定实施例中,一种方法包含接收识别第一寄存器、第二寄存器及第三寄存器的指令。所述方法还包含由处理器执行指令。执行指令包含将来自第一寄存器的第一值与来自第二寄存器的第二值相加以产生第一结果。执行所述指令还包含从来自第三寄存器的第三值减去第二值以产生第二结果。执行所述指令还包含将第一结果与第二结果进行比较。
在另一特定实施例中,一种设备包含用于存储识别第一寄存器、第二寄存器及第三寄存器的指令的装置。所述设备还包含用于执行指令的装置。用于执行指令的装置包含用于将来自第一寄存器的第一值与来自第二寄存器的第二值相加以产生第一结果的装置。用于执行指令的装置进一步包含用于从来自第三寄存器的第三值减去第二值以产生第二结果的装置。用于执行的装置进一步包含用于将第一结果与第二结果进行比较的装置。
在另一特定实施例中,一种非暂时性计算机可读媒体包含程序代码,其在由处理器执行时致使处理器接收识别第一寄存器、第二寄存器及第三寄存器的单个指令。程序代码还致使处理器执行单个指令。执行单个指令包含将来自第一寄存器的第一值与来自第二寄存器的第二值相加以产生第一结果。执行单个指令还包含从来自第三寄存器的第三值减去第二值以产生第二结果。执行单个指令进一步包含将第一结果与第二结果进行比较。
由所揭示实施例中的至少一者提供的一个特定优势为对于解码级来说减小的代码大小及较少的执行循环,这是归因于使用单个指令来执行相加、比较及选择功能性。在检视整个申请案后,将明白本揭示案的其它方面、优点和特征,所述申请案包含以下部分:附图说明、具体实施方式和权利要求书。
附图说明
图1为说明执行识别第一寄存器、第二寄存器及第三寄存器的指令的图;
图2为说明执行识别第一寄存器、第二寄存器及第三寄存器的指令的另一图;
图3为可操作以存储及处理识别第一寄存器、第二寄存器及第三寄存器的指令的系统的特定说明性实施例的图;
图4为处理识别第一寄存器、第二寄存器及第三寄存器的指令的方法的特定说明性实施例的流程图;及
图5为包含存储识别第一寄存器、第二寄存器及第三寄存器的指令的存储器的无线装置的特定实施例的框图。
具体实施方式
用于执行解码操作的指令可包含第一值(例如,解码器的路径度量值的第一集合)、第二值(例如,分支度量值)及第三值(例如,解码器的路径度量值的第二集合)。解码器可使用第一、第二及第三值在解码操作期间确定先前状态(例如,确定幸存者路径)。举例来说,第一值可对应于用以到达到达状态(S)的偶数状态(2S)的路径度量,且第三值可对应于用以到达到达状态(S)的奇数状态(2S+1)的路径度量。第二值可对应于从经解调的符号获得的分支度量,且可随代码多顶式而变。所述指令可任选地识别目的地寄存器。在执行指令时,可产生第一结果及第二结果。可响应于向量加法运算产生第一结果。举例来说,处理器可将第一值与第二值相加以产生第一结果。可响应于向量减法运算产生第二结果。举例来说,处理器可从第三值减去第二值以产生第二结果。在特定实施例中,第一值及第三值可包含互补位。
执行向量比较操作以将第一结果(例如,与偶数状态(2S)相关联的结果)与第二结果(例如,与奇数状态(2S+1)相关联的结果)进行比较。在第一结果大于第二结果时,可选择对应于偶数状态(2S)的先前状态。在第二结果大于第一结果时,可选择对应于奇数状态(2S+1)的先前状态。
参看图1,展示识别第一寄存器、第二寄存器及第三寄存器的指令100的执行的第一说明性实例。在特定实施例中,指令100可识别第一寄存器102、第二寄存器104、第三寄存器106及预测寄存器110。第一寄存器102可存储第一值112,第二寄存器104可存储第二值114,且第三寄存器106可存储第三值116。指令100可为“Pu,Rxx=vacsh(Rss,Rtt)”,其中‘vacsh’为100指令的操作码,‘Rxx’为第一寄存器102,‘Rtt’为第二寄存器104,‘Rss’为第三寄存器106,且‘Pu’为基于恢复的转变(例如,经编码的转变)是对应于偶数状态(2S)还是奇数状态(2S+1)来预测幸存者状态(即,先前状态)的预测寄存器110。
向量比较操作的结果可存储于预测寄存器110中以预测先前状态(例如,幸存者路径)是对应于偶数状态(2S)还是奇数状态(2S+1)。幸存者状态可随用以达到到达状态(S)的度量而变。举例来说,第一值112可对应于用以从偶数状态(2S)达到所述到达状态(S)的路径度量值的第一集合。路径度量值可对应于与经由最可能路径达到所述到达状态(S)的距离相关联的值。第二值114可对应于分支度量值。分支度量值可对应于测量状态之间的归一化距离的值。第三值116可对应于用以从奇数状态(2S+1)达到所述到达状态(S)的路径度量值的第二集合。在到达状态(S)处,例如Viterbi解码器等解码器可基于用以达到所述到达状态(S)的路径度量值112、116在偶数先前状态(2S)与奇数先前状态(2S+1)之间进行选择。
在操作期间,处理器内的向量加法器可执行向量加法运算以将来自第一寄存器102的第一值112与来自第二寄存器104的第二值114相加。举例来说,可将路径度量值的第一集合与分支度量值相加以产生第一结果122。处理器内的向量减法器可执行向量减法运算以从第三寄存器106的第三值116减去第二值114。举例来说,可将路径度量值的第二集合减去分支度量值以产生第二结果124。处理器内的比较器可执行向量比较操作以将第一结果122与第二结果124进行比较以确定结果122、124中的哪一者对应于较大值。
处理器可执行向量选择操作以选择对应于较大值的结果122或124,且可用选定结果126来更新第一寄存器102。举例来说,在第一结果122大于第二结果124时,将第一结果122存储于第一寄存器102中作为选定结果126,且预测先前状态对应于偶数状态(2S)。在第二结果124大于第一结果122时,将第二结果124存储于第一寄存器102中作为选定结果126,且预测先前状态对应于奇数状态(2S+1)。
应了解所描述的单个指令100可实现在相同执行循环期间执行向量加法运算、向量减法运算、向量比较操作及向量选择操作。将向量加法运算、向量减法运算、向量比较操作及向量选择操作实施为与四个单独指令相反的一个指令(例如,“vacsh”指令)可得到处理速度的约40%增益。举例来说,与五个管线循环(针对四个指令)相比较,可使用三个管线循环来执行单个指令。还应了解在发布指令100时,输送量可约等于每一循环两个节气门。举例来说,每一节气门可对应于在状态之间的可能转变的数目。在特定实施例中,在单个循环期间两次发布指令100时,输送量可约等于每一循环四个节气门。
参看图2,展示识别第一寄存器、第二寄存器及第三寄存器的指令的执行的第二说明性实例,且通常将其指定为200。
在特定实施例中,第一寄存器102可为包含四个部分的64位寄存器。举例来说,第一寄存器102可包含第一部分(Rxx.H3)212、第二部分(Rxx.H2)214、第三部分(Rxx.H1)216及第四部分(Rxx.H0)218。每一部分212到218可存储对应于第一路径度量值的16位值。举例来说,第一部分212可存储第一16位值(x1),第二部分214可存储第二16位值(x2),第三部分216可存储第三16位值(x3),且第四部分218可存储第四16位值(x4)。第一路径度量值可对应于图1的第一值112。举例来说,第一路径度量值可对应于用以从偶数状态(2S)到达所述到达状态(S)的路径度量值的第一集合。
在特定实施例中,第二寄存器104可为包含四个部分的64位寄存器。举例来说,第二寄存器104可包含第一部分(Rtt.H3)222、第二部分(Rtt.H2)224、第三部分(Rtt.H1)226及第四部分(Rtt.H0)228。每一部分222到228可存储对应于分支度量值的16位值。举例来说,第一部分222可存储第一16位值(y1),第二部分224可存储第二16位值(y2),第三部分226可存储第三16位值(y3),且第四部分228可存储第四16位值(y4)。
在特定实施例中,第三寄存器106可为包含四个部分的64位寄存器。举例来说,第三寄存器106可包含第一部分(Rss.H3)232、第二部分(Rss.H2)234、第三部分(Rss.H1)236及第四部分(Rss.H0)238。每一部分232到238可存储对应于第二路径度量值的16位值。举例来说,第一部分232可存储第一16位值(z1),第二部分234可存储第二16位值(z2),第三部分236可存储第三16位值(z3),且第四部分238可存储第四16位值(z4)。第二路径度量值可对应于图1的第三值116。举例来说,第二路径度量值可对应于用以从偶数状态(2S)到达所述到达状态(S)的路径度量值的第二集合。
第一向量加法器202经配置以将来自第一寄存器102的第一部分212的第一16位值(x1)与来自第二寄存器104的第一部分222的第一16位值(y1)相加以产生第一16位结果。第一向量减法器204经配置以从来自第三寄存器106的第一部分232的第一16位值(z1)减去第一16位值(y1)以产生第二16位结果。第一比较器206经配置以将第一16位结果与第二16位结果进行比较。基于所述比较,第一比较器206可产生识别第一16位结果是否大于第二16位结果或第二16位结果是否大于第一16位结果的第一旗标位(例如,1位信号)。第一旗标位可被提供到预测寄存器(Pu)210的第一部分,且用以预测先前状态最可能是偶数状态(2S)还是奇数状态(2S+1)。
也可将第一旗标位提供到选择装置208。在特定实施例中,选择装置208可为多路复用器。选择装置208经配置以基于第一旗标位选择第一16位结果或第二16位结果,且将选定结果提供到第一寄存器102的第一部分212。举例来说,选择装置208可在第一旗标位指示第一16位结果大于第二16位结果时将第一16位结果提供到第一寄存器102的第一部分212。或者,选择装置208可在第一旗标位指示第二16位结果大于第一16位结果时将第二16位结果提供到第一寄存器102的第一部分212。
额外向量加法器、向量减法器及比较器可并行且以与第一向量加法器202、第一向量减法器204及第一比较器206实质上类似的方式操作。举例来说,额外向量加法器、向量减法器及比较器可基于第一寄存器102、第二寄存器104及第三寄存器106的对应部分中的16位值产生第二旗标位、第三旗标位及第四旗标位。第一寄存器102的第二、第三及第四部分214到218可分别基于第二、第三及第四旗标位用16位结果来更新。因此,可在单个执行循环期间处理四个状态。
参看图3,揭示可操作以存储及处理指令100(例如,‘VACSH’指令)的系统的特定说明性实施例,且通常将其指定为300。系统300可包含经由总线接口308耦合到指令高速缓冲存储器310的存储器302。在特定实施例中,系统300的全部或一部分可集成到处理器中。
指令100(例如,相加-比较-选择指令)及第二指令352(例如,第二相加-比较-选择指令)可包含于极长指令字(VLIW)包350中。指令100可识别第一寄存器102、第二寄存器104及第三寄存器106,如图1到2中所说明。第一寄存器102、第二寄存器104及第三寄存器106可包含于通用寄存器堆326中。第一寄存器102可存储用以从偶数状态(2S)到达所述到达状态(S)的路径度量值的第一集合,第二寄存器104可存储分支度量值,且第三寄存器106可存储用以从奇数状态(2S+1)到达所述到达状态(S)的路径度量值的第二集合。指令100还可识别预测寄存器210。如关于图1到2所描述,向量比较操作的结果可存储于预测寄存器210中以预测先前状态(例如,幸存者路径)是对应于偶数状态(2S)还是奇数状态(2S+1)。预测寄存器210也可包含于通用寄存器堆326中。
存储器302可经由总线接口308将指令100发射到指令高速缓冲存储器310。数据高速缓冲存储器312也可经由总线接口308耦合到存储器302。在特定实施例中,存储器302可由解码器存取,所述解码器使用指令100来执行向量加法运算、向量减法运算、向量比较操作、向量选择操作或其任何组合,如关于图1到2所描述。举例来说,解码器可为译码器/解码器(CODEC)的部分,如参看图5所进一步描述。
指令高速缓冲存储器310可经由总线311耦合到定序器314。定序器314可接收通用中断316,可从中断寄存器(未图示)检索所述通用中断。在特定实施例中,指令高速缓冲存储器310可经由多个当前指令寄存器(未图示)耦合到定序器314,所述当前指令寄存器可耦合到总线311且与系统300的特定线程(例如,硬件线程)相关联。在特定实施例中,处理器300可为包含六个(6)线程的交错式多线程处理器。在另一特定实施例中,处理器300可包含三个(3)或四个(4)线程。
在特定实施例中,总线311可为一百二十八位(128位)总线,且定序器314可经配置以经由指令包(例如,包含指令100及第二指令352的极长指令字(VLIW)指令包350)从存储器302检索指令。定序器314可耦合到第一指令执行单元318、第二指令执行单元320、第三指令执行单元322及第四指令执行单元324。应注意可存在较少或较多指令执行单元。每一指令执行单元318到324可经由第一总线328耦合到通用寄存器堆326。通用寄存器堆326也可经由第二总线330耦合到定序器314、数据高速缓冲存储器312及存储器302。
系统300还可包含监督控制寄存器332以及全局控制寄存器334以存储可以通过定序器314内的控制逻辑存取的位,以确定是否接受中断(例如,通用中断316)及是否控制指令的执行。
在特定实施例中,执行单元318到324中的任一者可执行指令100以产生图1的第一结果122及第二结果124。在另一实施例中,执行单元318到324中的一些但非全部可执行指令100。举例来说,执行单元318到324可包含算术逻辑单元(ALU),所述ALU包含向量加法器、向量减法器、比较器及选择装置,如关于图2所描述。执行单元318到324可通过经由例如关于图2所描述的向量加法器202等向量加法器将存储于第一寄存器102中的路径度量值的第一集合与存储于第二寄存器104中的分支度量值相加而产生第一结果。执行单元318到324可通过经由例如关于图2所描述的向量减法器204等向量减法器从存储于第三寄存器106中的路径度量值的第二集合减去存储于第二寄存器104中的分支度量值而产生第二结果。执行单元318到324可将第一结果与第二结果进行比较以确定哪些结果较大,且将指示比较的结果的信号提供到预测寄存器210。存储于预测寄存器210中的信息可用以预测先前状态是对应于偶数状态(2S)还是奇数状态(2S+1)。
因此,在经编码数据流的解码期间,可使用单个指令从用以恢复到达状态的路径度量预测经编码数据信号的先前状态。此外,取决于比较,第一结果或第二结果可存储于第一寄存器中以用于后续状态预测。指令100可达成代码大小的总减小,且执行处理器的较少执行循环,这是归因于使用单个指令来预测先前状态。应了解同时执行指令100及第二指令352可通过使得系统300能够同时预测对应于多个Viterbi路径的多个先前状态来增加效率。
应注意图3中所描绘的系统300仅作为实例。所揭示的指令及技术可由其它架构(例如,微架构及数字信号处理器(DSP)架构)支持且在其它架构内执行。举例来说,替代DSP架构可包含相比图3的系统300更多、更少及/或不同的组件。为了进行说明,替代DSP架构可包含两个执行单元及两个加载/存储单元,而非如图3中所说明的四个执行单元。
参看图4,描绘处理识别第一寄存器、第二寄存器及第三寄存器的指令的方法的特定说明性实施例的流程图,且通常将其指定为400。在说明性实施例中,方法400可在图3的系统300处执行,且可参看图1到2进行说明。
方法400可包含在410处接收识别第一寄存器、第二寄存器及第三寄存器的指令。举例来说,在图3中,可在执行单元318到324中的一者处接收指令100。指令100可识别第一寄存器102、第二寄存器104及第三寄存器106。
方法400还可包含在420处执行指令。举例来说,在图3中,指令100可由执行单元318到324中的一者执行。执行420指令可包含在422处将来自第一寄存器的第一值与来自第二寄存器的第二值相加以产生第一结果。举例来说,在图3中,执行单元318到324中的一者的ALU内的向量加法器可通过将存储于第一寄存器102中的路径度量值的第一集合与存储于第二寄存器104中的分支度量值相加而产生第一结果。执行420指令还可包含在424处从来自第三寄存器的第三值减去第二值以产生第二结果。举例来说,在图3中,执行单元318到324中的一者的ALU内的向量减法器可通过从存储于第三寄存器106中的路径度量值的第二集合减去存储于第二寄存器104中的分支度量值来产生第二结果。执行420指令还可包含在426处将第一结果与第二结果进行比较以产生比较结果。举例来说,在图3中,执行单元318到324中的一者的ALU内的比较器可将第一结果与第二结果进行比较以确定结果中的哪一者较大,且将指示较大结果的信号提供到预测寄存器210。存储于预测寄存器210中的信息可用以预测先前状态是对应于偶数状态(2S)还是奇数状态(2S+1)。
可由现场可编程门阵列(FPGA)装置、专用集成电路(ASIC)、例如中央处理单元(CPU)等处理单元、数字信号处理器(DSP)、控制器、另一硬件装置、固件或其任何组合来实施图4的方法400。作为实例,图4的方法400可由执行程序代码或指令的处理器或其组件执行,如关于图3及5所描述。
参看图5,描绘包含存储识别第一寄存器102、第二寄存器104及第三寄存器106的指令100(例如,相加-比较-选择指令)的存储器532的无线装置的特定说明性实施例的框图,且通常将其指定为500。装置500包含耦合到存储器532的例如数字信号处理器(DSP)等处理器564。指令高速缓冲存储器(例如,说明性指令高速缓冲存储器310)也可耦合到存储器532及耦合到处理器564。在特定实施例中,存储器532存储例如指令100等可由处理器564执行的指令,且将其发射到指令高速缓冲存储器310。
图5还展示耦合到处理器564及显示器528的显示器控制器526。译码器/解码器(CODEC)534也可耦合到处理器564。扬声器536及麦克风538可耦合到CODEC 534。图5还指示无线控制器540可耦合到处理器564及无线天线542。在特定实施例中,处理器564、显示器控制器526、存储器532、CODEC 534及无线控制器540包含于系统级封装或芯片上系统装置522中。在特定实施例中,包含指令100的存储器532或指令高速缓冲存储器310可由CODEC 534存取,所述CODEC使用指令100以在电子装置(例如,无线装置500)处在音频或视频解码期间执行卷积解码。在特定实施例中,CODEC 534包含Viterbi解码器。
在处理时,指令100致使处理器564通过将存储于第一寄存器102中的路径度量值的第一集合与存储于第二寄存器104中的分支度量值相加而产生第一结果。指令100还致使处理器564通过从存储于第三寄存器106中的路径度量值的第二集合减去存储于第二寄存器104中的分支度量值而产生第二结果。在产生第一及第二结果后,指令100可即刻致使处理器564将第一结果与第二结果进行比较以确定结果中的哪一者较大,且将指示较大结果的信号提供到预测寄存器210。基于比较,可用第一结果或第二结果更新第一寄存器102。举例来说,如果第一结果大于第二结果,那么可将第一结果存储于第一寄存器102中。或者,如果第二结果大于第一结果,那么可将第二结果存储于第一寄存器102中。
在特定实施例中,输入装置530及电力供应器544耦合到芯片上系统装置522。此外,在特定实施例中,如图5中所说明,显示器528、输入装置530、扬声器536、麦克风538、无线天线542及电力供应器544在芯片上系统装置522外部。然而,显示器528、输入装置530、扬声器536、麦克风538、无线天线542及电力供应器544中的每一者可耦合到芯片上系统装置522的组件,例如接口或控制器。
应注意尽管图5描绘无线通信装置,但例如处理器564等用于执行相加-比较-选择指令的处理器、存储器532及存储相加-比较-选择指令的指令高速缓冲存储器310可替代地集成到机顶盒、音乐播放器、视频播放器、娱乐单元导航装置、个人数字助理(PDA)、固定位置数据单元或计算机中。
结合所描述实施例,揭示一种设备,其包含用于存储识别第一寄存器、第二寄存器及第三寄存器的指令的装置。举例来说,用于存储的装置可为图3的存储器302、图5的存储器532、图3及图5的指令高速缓冲存储器310、经配置以存储指令的一或多个其它装置,或其任何组合。
所述设备还可包含用于执行指令的装置。举例来说,用于执行指令的装置可包含图2的向量加法器、图2的向量减法器、图2的比较器、图2的选择装置、图3的执行单元318、320、322及324中的一或多者、图5的处理器564、经配置以执行指令的一或多个其它装置或其任何组合。
所述设备还可包含用于将来自第一寄存器的第一值与来自第二寄存器的第二值相加以产生第一结果的装置。举例来说,用于相加的装置可包含图2的向量加法器、图3的执行单元318、320、322及324中的一或多者、图5的处理器564、经配置以将值相加的一或多个其它装置,或其任何组合。
所述设备还可包含用于从来自第三寄存器的第三值减去第二值以产生第二结果的装置。举例来说,用于相加的装置可包含图2的向量减法器、图3的执行单元318、320、322及324中的一或多者、图5的处理器564、经配置以减去值的一或多个其它装置,或其任何组合。
所述设备还可包含用于将第一结果与第二结果进行比较的装置。举例来说,用于比较的装置可包含图2的比较器、图3的执行单元318、320、322及324中的一或多者、图5的处理器564、经配置以比较结果的一或多个其它装置,或其任何组合。
所属领域的技术人员将进一步了解,可将结合本文所揭示的实施例而描述的各种说明性逻辑区块、配置、模块、电路和算法步骤实施为电子硬件、计算机软件或两者的组合。已大体在其功能性方面描述各种说明性组件、块、配置、模块、电路及步骤。所述功能性是实施为硬件还是软件取决于特定应用及施加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述功能性,但所述实施决策不应被解释为导致偏离本发明的范围。
可直接以硬件、以由处理器执行的软件模块或以上述两者的组合实施结合本文所揭示的实施例而描述的方法或算法的步骤。软件模块可驻留在随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可装卸式磁盘、压缩光盘只读存储器(CD-ROM)或此项技术中已知的任何其它形式的非暂时性存储媒体中。示例性非暂时性(例如有形的)存储媒体耦合到处理器,使得处理器可从所述存储媒体读取信息,且将信息写入到所述存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器及存储媒体可驻留在专用集成电路(ASIC)中。ASIC可驻留在计算装置或用户终端中。或者,处理器及存储媒体可作为离散组件驻留在计算装置或用户终端中。
提供对所揭示实施例的先前描述以使得所属领域的技术人员能够制造或使用所揭示的实施例。对于所属领域的技术人员来说,对这些实施例的各种修改将为显而易见的,且可在不偏离本发明的范围的情况下将本文中所定义的原理应用于其它实施例。因此,本发明无意限于本文中所展示的实施例,而是将赋予本发明与如由所附权利要求书界定的原理和新颖特征一致的可能的最广范围。

Claims (26)

1.一种设备,其包括:
存储器,其存储识别第一寄存器、第二寄存器及第三寄存器的指令,其中在由处理器执行所述指令时:
由所述处理器执行向量加法运算以将来自所述第一寄存器的第一值与来自所述第二寄存器的第二值相加;
执行向量减法运算以从来自所述第三寄存器的第三值减去所述第二值;及
执行向量比较操作以将所述向量加法运算的结果与所述向量减法运算的结果进行比较。
2.根据权利要求1所述的设备,其中在由所述处理器执行所述指令时,执行向量选择操作以:
基于所述比较选择所述向量加法运算的所述结果或所述向量减法运算的所述结果;及
用所述选定结果更新所述第一寄存器。
3.根据权利要求2所述的设备,其中在所述向量加法运算的所述结果大于所述向量减法运算的所述结果时选择所述向量加法运算的所述结果,且其中在所述向量减法运算的所述结果大于所述向量加法运算的所述结果时选择所述向量减法运算的所述结果。
4.根据权利要求3所述的设备,其中解码器确定在所述选定结果为所述向量加法运算的所述结果时转变到偶数先前状态,且其中所述解码器确定在所述选定结果为所述向量减法运算的所述结果时转变到奇数先前状态。
5.根据权利要求2所述的设备,其中在同一执行循环期间执行所述向量加法运算、所述向量减法运算、所述向量比较操作及所述向量选择操作。
6.根据权利要求1所述的设备,其中所述指令进一步识别存储器位置,且其中将所述向量比较操作的结果存储于所述存储器位置处。
7.根据权利要求6所述的设备,其中所述存储器位置对应于所述第一寄存器。
8.根据权利要求1所述的设备,其中所述第一值为解码器的路径度量值的第一集合,其中所述第二值为分支度量值,其中所述第三值为路径度量值的第二集合。
9.根据权利要求8所述的设备,其中所述解码器为Viterbi解码器。
10.根据权利要求1所述的设备,其进一步包括包含所述指令及第二指令的极长指令字VLIW包。
11.一种方法,其包括:
接收识别第一寄存器、第二寄存器及第三寄存器的指令;及
由处理器执行所述指令,其中执行所述指令包括:
将来自所述第一寄存器的第一值与来自所述第二寄存器的第二值相加以产生第一结果;
从来自所述第三寄存器的第三值减去所述第二值以产生第二结果;及
将所述第一结果与所述第二结果进行比较。
12.根据权利要求11所述的方法,其中执行所述指令进一步包括:
基于所述比较选择所述第一结果或所述第二结果;及
用所述选定结果更新所述第一寄存器。
13.根据权利要求12所述的方法,其中在所述第一结果大于所述第二结果时选择所述第一结果,且其中在所述第二结果大于所述第一结果时选择所述第二结果。
14.根据权利要求13所述的方法,其中在同一执行循环期间执行将所述第一值与所述第二值相加,从所述第三值减去所述第二值,将所述第一结果与所述第二结果进行比较,及选择所述第一结果或所述第二结果中的一者。
15.根据权利要求11所述的方法,其中所述指令进一步识别存储器位置,且其中执行所述指令进一步包括将比较结果存储于所述存储器位置处。
16.根据权利要求11所述的方法,其中所述第一值为解码器的路径度量值的第一集合,其中所述第二值为分支度量值,其中所述第三值为路径度量值的第二集合。
17.根据权利要求16所述的方法,其中所述解码器为Viterbi解码器。
18.根据权利要求11所述的方法,其进一步包括接收包含所述指令及第二指令的极长指令字VLIW包。
19.一种设备,其包括:
用于存储识别第一寄存器、第二寄存器及第三寄存器的指令的装置;及
用于执行所述指令的装置,其中用于执行所述指令的所述装置包括:
用于将来自所述第一寄存器的第一值与来自所述第二寄存器的第二值相加以产生第一结果的装置;
用于从来自所述第三寄存器的第三值减去所述第二值以产生第二结果的装置;及
用于将所述第一结果与所述第二结果进行比较的装置。
20.根据权利要求19所述的设备,其中用于相加的所述装置包含向量加法器,其中用于减去的所述装置包含向量减法器,且其中用于比较的所述装置包含比较器。
21.根据权利要求19所述的设备,其中用于执行所述指令的所述装置经配置以在同一执行循环期间将所述第一值与所述第二值相加,从所述第三值减去所述第二值,及将所述第一结果与所述第二结果进行比较。
22.一种包含程序代码的非暂时性计算机可读媒体,所述程序代码在由处理器执行时致使所述处理器:
接收识别第一寄存器、第二寄存器及第三寄存器的单个指令;及
执行所述单个指令,其中执行所述单个指令包含:
将来自所述第一寄存器的第一值与来自所述第二寄存器的第二值相加以产生第一结果;
从来自所述第三寄存器的第三值减去所述第二值以产生第二结果;及
将所述第一结果与所述第二结果进行比较。
23.根据权利要求22所述的非暂时性计算机可读媒体,其中执行所述单个指令进一步包含:
基于所述比较选择所述第一结果或所述第二结果中的一者;及
用所述选定结果更新所述第一寄存器。
24.根据权利要求23所述的非暂时性计算机可读媒体,其中在同一执行循环期间执行将所述第一值与所述第二值相加,从所述第三值减去所述第二值,将所述第一结果与所述第二结果进行比较,及更新所述第一寄存器。
25.根据权利要求22所述的非暂时性计算机可读媒体,其中执行所述单个指令进一步包括将比较结果存储于存储器位置处。
26.根据权利要求26所述的非暂时性计算机可读媒体,其中执行所述指令使得所述处理器能够在单个执行循环期间处理多个状态。
CN201480012927.5A 2013-03-15 2014-03-12 相加-比较-选择指令 Active CN105027076B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/841,878 2013-03-15
US13/841,878 US9389854B2 (en) 2013-03-15 2013-03-15 Add-compare-select instruction
PCT/US2014/024203 WO2014150778A1 (en) 2013-03-15 2014-03-12 Add-compare-select instruction

Publications (2)

Publication Number Publication Date
CN105027076A true CN105027076A (zh) 2015-11-04
CN105027076B CN105027076B (zh) 2018-07-20

Family

ID=50483523

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480012927.5A Active CN105027076B (zh) 2013-03-15 2014-03-12 相加-比较-选择指令

Country Status (6)

Country Link
US (1) US9389854B2 (zh)
EP (1) EP2972786B1 (zh)
JP (1) JP6203935B2 (zh)
KR (1) KR101746681B1 (zh)
CN (1) CN105027076B (zh)
WO (1) WO2014150778A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315717A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行向量四则运算的装置和方法
WO2019174263A1 (zh) * 2018-03-15 2019-09-19 华为技术有限公司 用于随机计算的多加数加法电路
CN116204612A (zh) * 2022-10-20 2023-06-02 超聚变数字技术有限公司 一种文本相似度计算方法及系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176608B (zh) * 2016-04-26 2025-03-11 中科寒武纪科技股份有限公司 一种用于执行向量比较运算的装置和方法
CN107315715B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行矩阵加/减运算的装置和方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151904A (en) * 1990-09-27 1992-09-29 The Titan Corporation Reconfigurable, multi-user viterbi decoder
US6163581A (en) * 1997-05-05 2000-12-19 The Regents Of The University Of California Low-power state-sequential viterbi decoder for CDMA digital cellular applications
US20030028844A1 (en) * 2001-06-21 2003-02-06 Coombs Robert Anthony Method and apparatus for implementing a single cycle operation in a data processing system
CN1554152A (zh) * 2001-08-06 2004-12-08 模拟装置公司 数字信号处理器中的高性能turbo和iterbi信道解码
CN102122275A (zh) * 2010-01-08 2011-07-13 上海芯豪微电子有限公司 一种可配置处理器

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05206873A (ja) * 1992-01-29 1993-08-13 Sony Corp 再生装置
JP3198607B2 (ja) * 1992-03-31 2001-08-13 ソニー株式会社 磁気記録再生方法
JP3241210B2 (ja) 1994-06-23 2001-12-25 沖電気工業株式会社 ビタビ復号方法及びビタビ復号回路
US5987490A (en) * 1997-11-14 1999-11-16 Lucent Technologies Inc. Mac processor with efficient Viterbi ACS operation and automatic traceback store
US20020031195A1 (en) * 2000-09-08 2002-03-14 Hooman Honary Method and apparatus for constellation decoder
US7043682B1 (en) 2002-02-05 2006-05-09 Arc International Method and apparatus for implementing decode operations in a data processor
US8140947B2 (en) 2005-09-30 2012-03-20 Agere Systems Inc. Method and apparatus for storing survivor paths in a Viterbi detector using systematic pointer exchange
US7725516B2 (en) 2005-10-05 2010-05-25 Qualcomm Incorporated Fast DCT algorithm for DSP with VLIW architecture
US8356160B2 (en) * 2008-01-15 2013-01-15 International Business Machines Corporation Pipelined multiple operand minimum and maximum function
US8255780B2 (en) * 2009-02-18 2012-08-28 Saankhya Labs Pvt Ltd. Scalable VLIW processor for high-speed viterbi and trellis coded modulation decoding
JP4856288B1 (ja) * 2010-08-10 2012-01-18 パイオニア株式会社 インピーダンス整合装置、制御方法
US8694878B2 (en) 2011-06-15 2014-04-08 Texas Instruments Incorporated Processor instructions to accelerate Viterbi decoding
US10120692B2 (en) 2011-07-28 2018-11-06 Qualcomm Incorporated Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151904A (en) * 1990-09-27 1992-09-29 The Titan Corporation Reconfigurable, multi-user viterbi decoder
US6163581A (en) * 1997-05-05 2000-12-19 The Regents Of The University Of California Low-power state-sequential viterbi decoder for CDMA digital cellular applications
US20030028844A1 (en) * 2001-06-21 2003-02-06 Coombs Robert Anthony Method and apparatus for implementing a single cycle operation in a data processing system
CN1554152A (zh) * 2001-08-06 2004-12-08 模拟装置公司 数字信号处理器中的高性能turbo和iterbi信道解码
CN102122275A (zh) * 2010-01-08 2011-07-13 上海芯豪微电子有限公司 一种可配置处理器

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315717A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行向量四则运算的装置和方法
CN107315717B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行向量四则运算的装置和方法
US10997276B2 (en) 2016-04-26 2021-05-04 Cambricon Technologies Corporation Limited Apparatus and methods for vector operations
US11100192B2 (en) 2016-04-26 2021-08-24 Cambricon Technologies Corporation Limited Apparatus and methods for vector operations
US11341211B2 (en) 2016-04-26 2022-05-24 Cambricon Technologies Corporation Limited Apparatus and methods for vector operations
US11436301B2 (en) 2016-04-26 2022-09-06 Cambricon Technologies Corporation Limited Apparatus and methods for vector operations
US11507640B2 (en) 2016-04-26 2022-11-22 Cambricon Technologies Corporation Limited Apparatus and methods for vector operations
WO2019174263A1 (zh) * 2018-03-15 2019-09-19 华为技术有限公司 用于随机计算的多加数加法电路
US11119732B2 (en) 2018-03-15 2021-09-14 Huawei Technologies Co., Ltd. Multi-addend adder circuit for stochastic computing
CN116204612A (zh) * 2022-10-20 2023-06-02 超聚变数字技术有限公司 一种文本相似度计算方法及系统

Also Published As

Publication number Publication date
CN105027076B (zh) 2018-07-20
WO2014150778A1 (en) 2014-09-25
JP6203935B2 (ja) 2017-09-27
US9389854B2 (en) 2016-07-12
EP2972786B1 (en) 2021-12-01
EP2972786A1 (en) 2016-01-20
KR20150132387A (ko) 2015-11-25
JP2016517577A (ja) 2016-06-16
US20140281420A1 (en) 2014-09-18
KR101746681B1 (ko) 2017-06-13

Similar Documents

Publication Publication Date Title
KR101697548B1 (ko) Fifo 로드 명령
CN105027076B (zh) 相加-比较-选择指令
US20170322810A1 (en) Hypervector-based branch prediction
US20050157823A1 (en) Technique for improving viterbi decoder performance
US20190087193A1 (en) Training and utilization of neural branch predictor
US8281111B2 (en) System and method to execute a linear feedback-shift instruction
US8843730B2 (en) Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination
CN103874982B (zh) 确定顶部n个或底部n个数据值
KR102433782B1 (ko) 명령 패킷들을 위한 패리티
CN102822794B (zh) 处理阶层式极长指令包的系统和方法
US20190073223A1 (en) Hybrid fast path filter branch predictor
US20130042091A1 (en) BIT Splitting Instruction
HK1261188A1 (zh) 用於指令包的奇偶校驗
HK1261188B (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
GR01 Patent grant
GR01 Patent grant