基于精简指令集计算机结构的解码异常检测方法以及装置的制造方法

文档序号:10654138阅读:587来源:国知局
基于精简指令集计算机结构的解码异常检测方法以及装置的制造方法
【专利摘要】本发明的实施例提出一种基于精简指令集计算机结构的解码异常检测装置,至少包含异常寄存器、执行级及计数单元。执行级耦接至异常寄存器,用以于每一时钟周期执行码流错误检测,一旦发现码流发生错误且无法纠错时,将异常寄存器中的值设为逻辑“1”,用以指示发生不可恢复的码流错误,并且忽略目前指令而不执行。计数单元耦接于异常寄存器及执行级之间,包含计数器,于每一时钟周期检查异常寄存器中的值是否为逻辑“1”;如果异常寄存器中的值为逻辑“1”,将计数器设为执行级需要忽略的指令数目。
【专利说明】
基于精简指令集计算机结构的解码异常检测方法从及装置
技术领域
[0001] 本发明设及一种解码异常检测技术,特别是一种基于精简指令集计算机结构的解 码异常检测方法W及使用此方法的装置。
【背景技术】
[0002] 由于网络传输的错误等原因,视频解码忍片需要处理不正确的码流(code stream),用W检测各种可能出错的情况W及让出错的解码单元可及时被结束,使得视频可 正常被播放。运些解码异常可W出现在码流的各个部分,例如,序列头语句(sequence header syntax)、帖头语句(frame header syntax)、片头语句(slice header syntax)、宏 块头语句(Macroblock header syn1:ax)或各宏块的残差值等。
[0003] 在基于精简指令集计算机(RISC,Reduced Instruction Set Computer)结构的视 频解码忍片中,运种解码异常检测通常可藉由添加在着色器(shader)中的指令完成,亦即 解码异常的软件检测。然而,解码异常的软件检测需要在着色器中添加大量的跳转指令,会 大大降低视频解码的效率。
[0004] 因此,需要一种基于精简指令集计算机结构的解码异常检测装置,可W避免在着 色器中添加大量的跳转指令,并且在不影响视频解码效率的前提下,实现视频解码的异常 检测,保证出错的码流可W正常播放。同时,该解码异常的硬件检测,又可与软件检测兼容, 混合使用。

【发明内容】

[0005] 本发明的实施例提出一种基于精简指令集计算机结构的解码异常检测装置,至少 包含异常寄存器、执行级及计数单元。执行级禪接至异常寄存器,用W于每一时钟周期执行 码流错误检测,一旦发现码流发生错误且无法纠错时,将异常寄存器中的值设为逻辑"1", 用W指示发生不可恢复的码流错误,并且忽略目前指令而不执行。计数单元禪接于异常寄 存器及执行级之间,包含计数器,于每一时钟周期检查异常寄存器中的值是否为逻辑"r; 如果异常寄存器中的值为逻辑"r,将计数器设为执行级需要忽略的指令数目。
[0006] 本发明的实施例提出一种基于精简指令集计算机结构的解码异常检测方法,由执 行级于每一时钟周期执行,包含W下步骤:接收码流;判断码流是否发生错误;W及当发现 码流发生错误且无法纠错时,将异常寄存器中的值设为逻辑"1",用W指示发生不可恢复的 码流错误,W及忽略目前指令而不执行。
[0007] 本发明的实施例提出一种基于精简指令集计算机结构的解码异常检测方法,由解 码级于每一时钟周期执行,包含W下步骤:侦测到异常寄存器的值为逻辑"r时,控制多工 器,用W将跳转寄存器经由多工器禪接至指令提取级,使得指令提取级于下一时钟周期从 跳转寄存器中指示的地址读取指令。
【附图说明】
[0008] 图I是依据本发明实施例的基于精简指令集计算机结构的解码异常检测装置。
[0009] 图2是依据本发明实施例的包含解码异常检测的7流水级精简指令集计算机的系 统架构图。
[0010] 图3是依据本发明实施例的基于精简指令集计算机结构的解码异常检测方法的流 程图。
[0011] 图4是依据本发明实施例的基于精简指令集计算机结构的解码异常检测方法的流 程图。
【具体实施方式】
[0012] W下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并 不用W限定本发明。实际的
【发明内容】
必须参考之后的权利要求范围。
[001引必须了解的是,使用于本说明书中的"包含"、"包巧'等词,用W表示存在特定的技 术特征、数值、方法步骤、作业处理、组件W及/或组件,但并不排除可加上更多的技术特征、 数值、方法步骤、作业处理、组件、组件,或W上的任意组合。
[0014] 在权利要求中使用如"第一"、"第二"、"第立"等词是用来修饰权利要求中的组件, 并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执 行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
[0015] 本发明实施例提出了一种基于精简指令集计算机结构的解码异常检测装置。图1 是依据本发明实施例的基于精简指令集计算机结构的解码异常检测装置的方块图。解码异 常检测装置包含异常寄存器(error register) 110、执行级(;EX,Exe州tion) 120及计数单元 (counting unit) 130。执行级120禪接至异常寄存器110,用W于每一时钟周期执行码流错 误检测,一旦发现码流发生错误且无法纠错时,将异常寄存器110的值设为逻辑"1",用W指 示发生不可恢复的码流错误,并且忽略目前指令而不执行。计数单元130包含计数器131,并 且禪接于异常寄存器110及执行级120之间。于每一时钟周期检查异常寄存器110的值是否 为逻辑"r ;如果异常寄存器110的值为逻辑"r,将计数器131设为执行级120需要忽略的指 令数目。
[0016] 图2是依据本发明实施例的包含解码异常检测的7流水级(pipe-stages)精简指令 集计算机的系统架构图。7个流水级可包含指令提取级(IF,InstructionFetch) 211、指令存 取级(IA, Instruction Access)212、解码级(DE,Decode) 213、第0阶段执行级化XO , Execution 0)214、第1 阶段执行级巧Xl ,Execution 1 )215、第2阶段执行级巧X2 ,Execution 2)216及回写级(WB,Write Back)217。程序计数器(PC,Program Counter)220为一种寄存 器,负责存放目前指令的地址。固龄寄存器230(命名为SRJrPC)用于存放一旦出现解码异 常时,需要跳转到的指令的地址,着色器可使用特殊的跳转指令将此地址设定到跳转寄存 器230。特殊的跳转指令通常由执行级214执行。例如,跳转指令可为"JUMPJu叫)Label",其 中,"JumpLaber指示着色器中的特定标签。此地址为出错处理函数(error handler)的起 始地址。指令提取级211可经由多工器(MUX,multiplexer)240从程序计数器220或跳转寄存 器230读取地址。指令存取级212依据读取指令从指令高速缓存(ins化UCtion cache)提取 一个指令,此指令可为16位、32位或64位。所有指令可能拥有一至多个寄存器输入。解码级 213辨识指令中的寄存器,W及读取寄存器中的值。执行级214至216中的任一个包含运算逻 辑单元(ALU,Arithmetic and Logic Unit)W及位移器(bit shifter)。运算逻辑单元负责 执行布尔运算(如AND、OR、NOT、NAND、NOR、XOR、XNOR等),而位移器负责位移运算及位旋转。 回写级217将计算结果写入寄存器文档(register file)。
[0017]异常寄存器250(命名为SR_^Flag)用于存放是否出现解码异常的旗标位(flag bit)。执行级214至216中的任一个于执行指令时都会执行码流错误检测,例如,奇偶校验 parity Qieck)、错误检查与校正巧CC,Error Qiecking and Correction)等。一旦发现码 流发生错误且无法纠错时,执行级将异常寄存器250中的值设为逻辑"1",用W指示发生不 可恢复的码流错误,并且忽略目前指令而不执行。执行级214至216中的码流错误检测可依 据视频标准不同具有不同的检测目标。码流错误检测可置入于特定的码流解码阶段中,例 如序列头语句(sequence header syn1:ax)解码、帖头语句(frame header syn1:ax)解码、片 头语句(slice header syntax)解码、宏块头语句(Macroblock header syn1:ax)解码或各 宏块的残差值解码等。WH.264标准为例,表1列出几个错误检测的例子:
[001引 表1
[0019]
[0020] 当异常寄存器250中的值设为逻辑"r时,亦表示执行级214至216需要一段时间的 跳转保护。解码级213不断检查异常寄存器250中的值是否为逻辑"1"。如果是,解码级213指 示指令提取级211于下一个时钟周期读取跳转寄存器230中存放的地址W及将异常寄存器 250中的值设为逻辑"0"。具体来说,解码级213控制多工器240,用W将跳转寄存器230连接 至指令提取级211,使得指令提取级211在下一个时钟周期从跳转寄存器230读取地址。此 夕h计数单元(counting unit)271连接在执行级214及异常寄存器250之间,在每一个时钟 周期,一旦侦测到异常寄存器250中的值为逻辑"1",将计数单元271中的计数器(counter) 设为执行级214需要忽略的指令数目,例如4。计数单元272连接在执行级215及异常寄存器 250之间,在每一个时钟周期,一旦侦测到异常寄存器250中的值为逻辑"1",将计数单元272 中的计数器设为执行级215需要忽略的指令数目,例如5。计数单元273连接在执行级216及 异常寄存器250之间,在每一个时钟周期,一旦侦测到异常寄存器250中的值为逻辑"1",将 计数单元273中的计数器设为执行级216需要忽略的指令数目,例如6。当计数单元271、272 及273中的每一个在每一个时钟周期侦测到异常寄存器250中的值为逻辑"0"且其中的计数 器的值大于0时,将计数器的值减1。执行级214至216于执行指令前,分别检查计数单元271 至273中的计数器的值是否大于0,若是,则忽略目前指令而不执行。
[0021] 图3是依据本发明实施例的基于精简指令集计算机结构的解码异常检测方法的流 程图,由执行级214至216中的任一个在每一时钟周期执行。取得码流(步骤S310),并且判断 码流是否发生错误且无法纠错(步骤S320)。当发现码流发生错误且无法纠错时(步骤S320 中"是"的路径),将异常寄存器250的值设为逻辑"1",用W指示发生不可恢复的码流错误, W及忽略目前指令而不执行(步骤S330)。反之(步骤S320中"否"的路径),判断相应计数单 元27U272或273的计数器的值是否大于0(步骤S340)。当相应计数单元中的计数器的值大 于O时(步骤S340中"是"的路径),忽略目前指令而不执行(步骤S350);反之(步骤S340中 "否"的路径),执行目前指令(步骤S360)。
[0022] 图4是依据本发明实施例的基于精简指令集计算机结构的解码异常检测方法的流 程图,由解码级213于每一时钟周期执行。读取异常寄存器250的值(步骤S410),W及判断异 常寄存器250的值是否为逻辑"r (步骤S420)。当异常寄存器250的值为逻辑"r时(步骤 S420中"是"的路径),控制多工器240,用W将跳转寄存器230经由多工器240禪接至指令提 取级211,使得指令提取级211于下一时钟周期从跳转寄存器230中指示的地址读取指令(步 骤S430)。
[0023] 表2显示于执行级214中检测到码流错误后的整个流水线运行:
[0024] 表 2
[0025]
[0027] 表2描述每一级于不同时钟周期执行指令的地址,"PC"或巧r"代表发现错误的地 址,"化"代表跳转寄存器230储存的地址,W及数字代表字节(bytes)的数目。假设执行级 214于时钟周期航发现码流发生错误且无法纠错,表示为"PC/Er":执行级214将异常寄存器 250中的值设为逻辑"1"。解码级213于时钟周期#n+l发现异常寄存器250中的值为逻辑"r 时,控制多工器240用W将跳转寄存器230连接至指令提取级211,接着,将异常寄存器250中 的值为逻辑"0"。此外,计数单元271至273于时钟周期#n+l发现异常寄存器250中的值为逻 辑"r时,将其中的计数器分别设为4、5及6。在此须注意的是,于时钟周期#n+l,计数单元 271至273对其中的计数器的设定在解码级213将异常寄存器250中的值设为逻辑"0"之前。 另在此须注意的是,通过参考计数单元271中的计数器,执行级214于时钟周期#11+1至#11+4 忽略指令而不执行。通过参考计数单元272中的计数器,执行级215于时钟周期#n+l至扣巧 忽略指令而不执行。通过参考计数单元273中的计数器,执行级216于时钟周期#11+1至#11+6 忽略指令而不执行。
[0028] 表3显示于执行级215中检测到码流错误后的整个流水线运行:
[0029] 表3
[0030]
L 0031J 表3描还每一级十小问时钟巧期执行指令的地址。假巧执行级215十时钟巧期#11发 现码流发生错误且无法纠错,表示为"PC/Er":执行级215将异常寄存器250中的值设为逻辑 "1"。解码级213于时钟周期#n+l发现异常寄存器250中的值为逻辑T'时,控制多工器240用 W将跳转寄存器230连接至指令提取级211,接着,将异常寄存器250中的值为逻辑"0"。此 夕h计数单元271至273于时钟周期#n+l发现异常寄存器250中的值为逻辑"r时,将其中的 计数器分别设为4、5及6。在此须注意的是,于时钟周期#n+l,计数单元271至273对其中的计 数器的设定在解码级213将异常寄存器250中的值设为逻辑"0"之前。另在此须注意的是,通 过参考计数单元271中的计数器,执行级214于时钟周期#11+1至#11+4忽略指令而不执行。通 过参考计数单元272中的计数器,执行级215于时钟周期#11+1至#11巧忽略指令而不执行。通 过参考计数单元273中的计数器,执行级216于时钟周期航+1至航+6忽略指令而不执行。
[0032]表4显示于执行级216中检测到码流错误后的整个流水线运行:
[003;3]表 4
[0034]
[0035] 表4描述每一级于不同时钟周期执行指令的地址。假设执行级216于时钟周期航发 现码流发生错误且无法纠错,表示为"PC/Er":执行级216将异常寄存器250中的值设为逻辑 "1"。解码级213于时钟周期#n+l发现异常寄存器250中的值为逻辑T'时,控制多工器240用 W将跳转寄存器230连接至指令提取级211,接着,将异常寄存器250中的值为逻辑"0"。此 夕h计数单元271至273于时钟周期#n+l发现异常寄存器250中的值为逻辑"r时,将其中的 计数器分别设为4、5及6。在此须注意的是,于时钟周期#n+l,计数单元271至273对其中的计 数器的设定在解码级213将异常寄存器250中的值设为逻辑"0"之前。另在此须注意的是,通 过参考计数单元271中的计数器,执行级214于时钟周期#11+1至#11+4忽略指令而不执行。通 过参考计数单元272中的计数器,执行级215于时钟周期#11+1至#11巧忽略指令而不执行。通 过参考计数单元273中的计数器,执行级216于时钟周期航+1至航+6忽略指令而不执行。
[0036] 虽然图1及图2中包含了 W上描述的组件,但不排除在不违反本发明的精神下,使 用更多其它的附加组件,W达成更佳的技术效果。此外,虽然图3至图4的处理步骤采用特定 的顺序来执行,但是在不违反发明精神的情况下,熟习此技艺人±可^在达到相同效果的 前提下,修改运些步骤间的顺序,所W,本发明并不局限于仅使用如上所述的顺序。
[0037] 虽然本发明使用W上实施例进行说明,但需要注意的是,运些描述并非用W限缩 本发明。相反地,此发明涵盖了熟习此技艺人±显而易见的修改与相似设置。所W,本发明 权利要求范围须W最宽广的方式解释来包含所有显而易见的修改与相似设置。
[003引【符号说明】
[0039] 110异常寄存器;
[0040] 120 执行级;
[0041] 130计数单元;
[0042] 131 计数器;
[0043] 211指令提取级;
[0044] 212指令存取级;
[0045] 213 解码级;
[0046] 214、215、216 执行级;
[0047] 217 回写级;
[004引 220程序计数器;
[0049] 230跳转寄存器;
[0化0] 240多工器;
[0化1] 250异常寄存器;
[0化2] 271、272、273 计数单元;
[0化3] S310~S360方法步骤;
[0054] S410~S430方法步骤。
【主权项】
1. 一种基于精简指令集计算机结构的解码异常检测装置,包含: 一异常寄存器; 一执行级,耦接至上述异常寄存器,用以于每一时钟周期执行一码流错误检测,一旦发 现一码流发生错误且无法纠错时,将上述异常寄存器中的值设为逻辑"Γ,用以指示发生不 可恢复的码流错误,并且忽略目前指令而不执行;以及 一计数单元,耦接于上述异常寄存器及上述执行级之间,包含一计数器,于每一时钟周 期检查上述异常寄存器中的值是否为逻辑"Γ ;如果上述异常寄存器中的值为逻辑"Γ,将 上述计数器设为上述执行级需要忽略的指令数目。2. 如权利要求1所述的基于精简指令集计算机结构的解码异常检测装置,其中,上述执 行级更于每一时钟周期发现上述计数器的值大于〇时,忽略目前指令而不执行。3. 如权利要求1所述的基于精简指令集计算机结构的解码异常检测装置,其中,上述计 数单元更于每一时钟周期侦测到上述异常寄存器的值为逻辑"0"且上述计数器的值大于0 时,将上述计数器的值减1。4. 如权利要求1所述的基于精简指令集计算机结构的解码异常检测装置,更包含: 一跳转寄存器, 其中,上述执行级执行一跳转指令来将一地址设定至上述跳转寄存器,上述地址为一 出错处理函数的起始地址。5. 如权利要求4所述的基于精简指令集计算机结构的解码异常检测装置,更包含: 一多工器,耦接于上述跳转寄存器、一程序计数器以及一指令提取级之间;以及 一解码器,耦接于上述多工器及上述异常寄存器之间,于每一时钟周期侦测到上述异 常寄存器的值为逻辑"Γ时,控制上述多工器,用以将上述跳转寄存器耦接至上述指令提取 级,使得上述指令提取级于下一时钟周期从上述跳转寄存器中指示的上述地址读取指令。6. 如权利要求1所述的基于精简指令集计算机结构的解码异常检测装置,其中,上述码 流错误检测置入于一码流解码阶段。7. 如权利要求6所述的基于精简指令集计算机结构的解码异常检测装置,其中,上述码 流解码阶段包含一序列头语句解码、一帧头语句解码、一片头语句解码、一宏块头语句解码 或一各宏块的残差值解码。8. -种基于精简指令集计算机结构的解码异常检测方法,由一执行级于每一时钟周期 执行,包含: 取得一码流; 判断上述码流是否发生错误;以及 当发现上述码流发生错误且无法纠错时,将一异常寄存器中的值设为逻辑"Γ,用以指 示发生不可恢复的码流错误,以及忽略目前指令而不执行。9. 如权利要求8所述的基于精简指令集计算机结构的解码异常检测方法,更包含: 一旦发现上述计数器的值大于0时,忽略目前指令而不执行。10. 如权利要求8所述的基于精简指令集计算机结构的解码异常检测方法,更包含: 执行一跳转指令来将一地址设定至上述跳转寄存器,上述地址为一出错处理函数的起 始地址。11. 如权利要求8所述的基于精简指令集计算机结构的解码异常检测方法,其中上述执 行级包含一运算逻辑单元及一位移器,上述运算逻辑单元负责执行布尔运算,以及上述位 移器负责位移运算及位旋转。12. -种基于精简指令集计算机结构的解码异常检测方法,由一解码级于每一时钟周 期执行,包含: 侦测到一异常寄存器的值为逻辑"Γ时,控制一多工器,用以将一跳转寄存器经由上述 多工器耦接至一指令提取级,使得上述指令提取级于下一时钟周期从上述跳转寄存器中指 示的上述地址读取指令。13. 如权利要求12所述的基于精简指令集计算机结构的解码异常检测方法,其中上述 解码级辨识一指令中的一寄存器,以及读取上述寄存器中的值。
【文档编号】G06F11/07GK106020774SQ201610339033
【公开日】2016年10月12日
【申请日】2016年5月20日
【发明人】邵瑾, 吴永海
【申请人】上海兆芯集成电路有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1