Questions tagged «mips»

4
RISC / CISC指令执行多少个时钟周期?
根据Harris和Harris的《数字设计和计算机体系结构》,有几种实现MIPS处理器的方法,包括以下几种: 所述单周期微架构执行在一个周期的整个指令。(...) 在多周期微架构在一系列更短的周期执行的指令。(...) 该流水线微架构适用于流水线单周期微架构。 架构通常分为RISC或CISC。从RISC与CISC: RISC处理器仅使用可以在一个时钟周期内执行的简单指令。 由于MIPS是RISC体系结构,因此我对上述定义感到困惑,想知道它们之间是否没有任何矛盾。进一步来说: 如果可以将RISC指令划分为更短的周期(提取,解码等),那么如何说仅需一个时钟周期即可执行整个指令?执行每个步骤都不需要一个时钟周期吗? 它是否真的需要一个时钟周期执行一个RISC指令?例如,如果发生高速缓存未命中并且处理器必须等待慢速DRAM,会发生什么情况?这不应该使指令的执行时间延长很多吗? 一个指令周期到底是什么?是一条指令完成所花费的时间(即一个/多个时钟周期)吗? 一条CISC指令在时钟/指令周期中需要花费多长时间?

4
当您可以对两个寄存器进行XOR以产生0时,为什么MIPS将R0用作“零”?
我认为我正在寻找琐事问题的答案。我试图理解为什么MIPS体系结构在通过对自己的寄存器进行异或运算就可以实现同一目的时,在寄存器中使用显式的“零”值的原因。可以说该操作已经为您完成;但是,我真的无法想象您会使用很多“零”值的情况。我阅读了轩尼诗的原始论文,事实上,它只是分配了一个零,没有任何正当的理由。 是否存在将硬编码二进制赋值为零的逻辑原因? 更新: 在8k的xc32-gcc可执行文件(用于PIC32MZ中的MIPS内核)中,我有一个“零”实例。 add t3,t1,zero 实际答案: 我将赏金授予拥有MIPS和条件代码信息的人。答案实际上取决于条件的MIPS架构。尽管起初我不想分配时间,但我回顾了openparc,MIPS-V和OpenPOWER的体系结构(本文为内部文件),以下是摘要。由于管线的体系结构,R0寄存器是在分支上进行比较所必需的。 整数与零和分支比较(bgez,bgtz,blez,bltz) 整数比较两个寄存器并分支(beq,bne) 整数比较两个寄存器和陷阱(teq,tge,tlt,tne) 整数比较寄存器以及立即数和陷阱(teqi,tgei,tlti,tnei) 它只是归结为硬件在实现中的外观。在MIPS-V手册中,第68页有未引用的报价: 条件分支的设计包括两个寄存器之间的算术比较操作(在PA-RISC和Xtensa ISA中也是如此),而不是使用条件代码(x86,ARM,SPARC,PowerPC),或仅将一个寄存器与零进行比较( Alpha,MIPS)或两个仅用于相等性的寄存器(MIPS)。该设计的动机是观察到组合的比较分支指令ts进入常规流水线,避免了额外的条件代码状态或使用了临时寄存器,并减少了静态代码的大小和动态指令的获取速度。另一个要点是,与零的比较需要很短的电路延迟(尤其是在高级过程中转移到静态逻辑之后),因此几乎与算术幅值比较昂贵。融合比较分支指令的另一个优点是,可以在前端指令流中更早地观察到分支,因此可以更早地进行预测。在可以基于相同条件代码进行多个分支的情况下,具有条件代码的设计可能会有优势,但我们认为这种情况相对较少。 MIPS-V文档没有引用部分的作者。我感谢大家的时间和考虑。

3
ALU如何实现各种功能(例如,加,减等)?
我想知道ALU需要完成许多功能,如何开始实现一个功能(一项家庭作业,我应该使用Logisim,使用基本Gates,触发器等来实现MIPS系统)。 我感到困惑的部分是如何实现一个ALU,该ALU可以执行不同的功能,例如加/减/与/或/等。我是否需要更多的控制逻辑(请参见下面的“上一个分配”中的右上角)。 在上一个作业中,我实现了可以执行加/减/求和的ALU。现在我认为ALU应该能够执行以下功能 我的前期任务
9 alu  mips 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.