MicroBlaze  – 指令缓冲区的深度和宽度以及它的用途是什么?-Altera-Intel社区-FPGA CPLD-ChipDebug

MicroBlaze – 指令缓冲区的深度和宽度以及它的用途是什么?

问题描述

一般问题描述:

指令缓冲区的宽度和深度是多少?什么是指令缓冲区?

解决/修复方法

指令缓冲区为32位宽,16位深,因为它使用32个SRL16实现。但是,只使用了4-5个单词。指令缓冲区不使用任何BRAM并提高整体性能,尤其是在MicroBlaze中未启用指令缓存时。

您可以将指令缓冲区视为迷你缓存。您可以使用它来存储一些指令,以便可以快速访问多个连续指令。但是,这对分支机构没有帮助;如果发生分支,则刷新指令缓冲区,因为其余指令不再有用。

使用指令缓冲区有两个好处:

1.当MicroBlaze执行多时钟周期指令(如MUL或DIV)时,取指令可以预取指令,以便在通过OPB获取时最小化总线延迟。当只运行LMB时,没有任何优势。

它使管道控制的实现变得更加容易。

如果没有指令缓冲区,除非有新指令进入,否则不能移动管道,并且除非知道可以使用该指令,否则无法启动新的提取。例如,DIV指令需要35个时钟周期。当仅在LMB上运行时,新的提取在时钟周期33开始。但是,当在OPB上运行时,它取决于OPB延迟。这使得管道处理非常复杂。

使用指令缓冲区,如果缓冲区中有空间,则可以进行提取,与当前指令无关。只要缓冲区中有指令,就可以移动管道。不使用缓冲区中所有16个位置的原因是因为实际上在平均5-7条指令之后通常存在分支指令,并且对于每个分支,指令缓冲区无效。获取太多指令会在总线上引入不必要的内存提取,并可能使总线上的其他主器件停顿。

请登录后发表评论

    没有回复内容