首页 文章
  • 0 votes
     answers
     views

    MIPS管道Cpu架构

    我真的很清楚,任何形式的帮助都会非常感激 . 考虑到这个CPU: 我必须: 确定完成所有指令所需的总时钟周期数 . 自第一条指令开始后6 cc(时钟周期)后确定 ID/EX 寄存器的内容 . 这些是说明:0x450: addi $1, $4, -1lw $2, 0($1)lw $3, 0($2)sw $3, 80($1) 我完成了:完成了: | 1 | 2 | 3 | 4 | ...
  • 1 votes
     answers
     views

    MIPS管道在有和没有转发的情况下停止

    在以下MIPS指令序列中(整个程序未显示): DADDUI R1, R1, #-8 BNE R1, R2, Loop 我想确认两个指令之间所需的停顿数量(在5级MIPS流水线的背景下 - IF,ID / Reg,EX,MEM,WB)有无转发 . 我的理解: (a)如果没有转发: 在这种情况下,需要2个停顿(在周期5中,可以使用寄存器的分相访问在ID阶段读取第二个指令的R1) (b)如果有转发...
  • 3 votes
     answers
     views

    在MIPS中组织管道

    我不确定以下属性如何影响5阶段MIPS设计(IF,ID,EX,MEM,WB)的管道执行 . 我只需要一些清理工作 . 只有1个内存端口 没有数据发送 . 分支停止直到*阶段结束 1个内存端口是否意味着当我们读取/写入mem时无法获取或写入(即lw上的MEM阶段,sw不能进入IF或其他MEM)?如果没有转发,这意味着指令不会进入ID阶段,直到WB阶段之后或之前,它依赖于前一条指令? ...
  • 0 votes
     answers
     views

    带和不带转发的MIPS管道

    我正在查看以下MIPS代码中的停顿数量,有无转发 . 我试图更好地了解数据路径中何时需要数据 . lw $10, 0($4) sw $10, 24($5) 通过转发,我得到以下结论,条件是在存储器阶段之后,从加载字指令进入寄存器10的值是可用的,并且在存储器阶段之前存储字指令需要该值 . 因此,零档位 . F D E M W F D E M W 如果没有转发,寄存器10将不会从加载字指令中...
  • 2 votes
     answers
     views

    MIPS Datapath混淆

    一直在学习mips数据路径,并有几个问题 . 为什么会有回写阶段? -Thoughts:如果它没有增加更多的延迟或使时钟周期更长,似乎你可以将写回阶段的多路复用器移动到Mem阶段并移除Mem / Writeback缓冲区并完全摆脱回写阶段 . 为什么不是这样? 关于分支预测和停顿的混乱 . -Thoughts:如果一个add指令跟随beq指令进入pipline(beq在ID阶段,加入fe...
  • 1 votes
     answers
     views

    PIPELINE - mem(内存)和if(取指令)

    在PIPELINE中,MEM(内存)和IF(指令获取)是相同的硬件元素吗? 如果是相同的内存,那么2个指令不能加载或存储在同一个周期时钟中,我是对的? MIPS处理器图
  • 1 votes
     answers
     views

    MIPS流水线寄存器长度(IF / ID,ID / EX,EX / MEM,MEM / WB)

    我目前正在攻读我的计算机体系结构考试,并且在 sub (在时钟通勤之前)的第3阶段之后发现了一个问题,要求说明(我会假设一点一点)mips管道架构中包含的值给出以下内容说明 . add $t0,$t1,$t2 sub $t3,$t3,$t5 beq $t6,$t0,16 add $t0,$t1,$t3 我不是要求解决这个问题但是经过一些研究后我没有取得太大的成功包围我所以我要求一些帮助/建...
  • 0 votes
     answers
     views

    MIPS管道阶段

    我知道有五个阶段 - > IF,ID,EX,MEM,WB . 并且时钟周期由最长阶段确定 . 我不明白的是当一条指令没有使用所有阶段时会发生什么,比如说添加不需要MEM阶段的指令,让我们说时钟周期是200ps,所以它表示对于使用所有阶段的指令,执行需要1000ps . 是否需要相同的1000ps来执行不使用MEM stege的指令(这意味着浪费了200ps)?谢谢!
  • 0 votes
     answers
     views

    MIPS汇编矩阵乘法

    你好,我需要帮助乘以2个matricies . 下面的程序是MARS汇编程序中的MIPS程序,用于3x3矩阵乘法 . 到目前为止,我有下面的代码,但我仍然接受000的输出当我需要输出应该是0,6,12,0,6,12,0,6,12分隔一个新的线,这是矩阵乘法AxB . 代码有什么问题?请真的需要很多帮助! .data newline:.asciiz "\n" ...
  • 0 votes
     answers
     views

    MIPS汇编 - 矩阵乘法算术溢出错误?

    下面是我的代码来自MIPS hw赋值,我们必须将两个矩阵相乘 . 我们的任务是实现 matrix_multiply 函数和 matrix_print 函数 .data matrix_a: .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 matrix_b: .word 1, 2, 3, 4, 5, 6, 7, 8,...
  • 0 votes
     answers
     views

    如何设置mips函数的值? [等候接听]

    我是学习mips程序集的新手,我目前面临MIPS汇编中递归函数的问题 . 我理解函数是如何工作的,但我不能想到如何实现这个C代码: int example(int n) //code if(//code) return 0; if(example(n+1)==1){ //do something } if(//code) return 1; 这个程序没有做任何事情,但我想要低估如何在mi...
  • 0 votes
     answers
     views

    我的MIPS汇编代码中的错误

    我有这个代码,但它没有完全按照我的要求执行 . 它正确地计算数学但在某些点打印出错误的值 . 例如,如果我输入15,它应该打印出以下内容: 15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1 我期待这个输出,因为它是基于此编码的 start : if (n == 1) stop ; else if (n is even ) n = n/2; els...
  • 1 votes
     answers
     views

    RISC访问地址大于最大整数

    假设您正在运行32位RISC系统 . 您将使用什么指令来访问64位内存地址? 在CISC指令集中,您可以使用多字指令简单地传递额外的字 . 例如: 1a) JMP 1b) loAddress 1c) hiAddress 鉴于RISC指令每个只有一个字,您将如何访问多字地址? 假设ALU是32位并且具有进位标志 . 此外,在CISC系统(例如8080)中,loAddress和hiAddress字都...
  • -4 votes
     answers
     views

    MIPS组装连接器练习

    我已经获得了一个链接练习的讲义 . 我知道我需要识别需要修改哪些指令,这些指令涉及哪些地址,并找出地址 . 但在实践中,我不知道该怎么做 . 以下是所述练习的图片 . 任何帮助表示赞赏 . Linker Exercise
  • -4 votes
     answers
     views

    编写一个MIPS汇编代码,用于实现将仿射变换应用于输入图像的函数[暂停]

    [使用映射输入处的像素的2×3变换矩阵(M)来描述这种变换 图像到输出图像中的不同坐标 . 仿射变换具有这种属性 将输入图像中的平行线映射到输出图像中的平行线 . 仿射变换的例子 包括:翻译,旋转,反思和缩放 . ] 1 [以下算法演示了将仿射变换应用于输入图像 . 在这 算法x和y表示当前像素坐标 - x是列索引,y是 行索引 . 左上角像素的坐标为(0,0) . 对于x,y坐标处的每个输入图...
  • -5 votes
     answers
     views

    编写MIPS汇编代码,该代码实现将仿射变换应用于输入图像的功能 . [等候接听]

    这是代码的开头 [使用映射输入处的像素的2×3变换矩阵(M)来描述这种变换 图像到输出图像中的不同坐标 . 仿射变换具有这种属性 将输入图像中的平行线映射到输出图像中的平行线 . 仿射变换的例子 包括:翻译,旋转,反思和规模 . 以下算法演示了将仿射变换应用于输入图像 . 在这 算法x和y表示当前像素坐标 - x是列索引,y是 行索引 . 左上角像素的坐标为(0,0) . 对于x,y坐标处的每个...
  • 1 votes
     answers
     views

    动态内存分配和释放MIPS

    用于动态分配内存的MIPS代码 . 我需要编写一个主程序,通过控制台继续等待用户请求的循环,以便为具有名称的变量分配/释放大小的内存,并相应地调用分配或释放过程 . 分配过程分配可用的块(即,未分配给另一个变量的块)的内存,并更新它的表以指示其内存的哪些部分被分配给哪些变量,以及哪些部分的内存仍然可用 . 当主程序请求释放过程释放分配给变量的一部分内存时,该过程将标记早先将该变量分配给该变量的那些...
  • 0 votes
     answers
     views

    帮助从十六进制中的MIPS指令中查找地址

    嗨,我被困在我的任务上,这要求我写一个c程序,读取输入文件,如: Registers r1 = 0c100009 Instructions 0c100009 3c071001 8ce20011 84e33080 80e48000 ace2ffff a4e39001 a0e48088 03e00008 并确定指令是保存还是加载,指令访问了多少字节,以及内存中第一个字节的地址 . 我需要帮助了解指...
  • 6 votes
     answers
     views

    MIPS - 在用户输入的数组中存储整数

    我正在尝试将用户输入存储到数组中,但是当我使用sw时,我收到错误“存储地址未在字绑定上对齐” . 我的目标是从数组中读取10个整数,但在输入第一个数字后,我在sw命令中得到一个错误 . 我不知道我做错了什么我花了几个小时试图解决它 . 任何帮助将非常感谢并标记为有用 . .data mess: .asciiz " Enter 10 numbers to be stored in th...
  • 0 votes
     answers
     views

    Mips中的分支指令和跳转指令

    我是Mips的新手,我需要你的帮助 . 我遇到了一个练习: Assuming that the program counter has the 2000 0000hex value in it, is it possible that the program counter will get the 00001000hex or the 20001400hex value using the be...
  • 0 votes
     answers
     views

    用MIPS汇编语言设置一下

    我正在设置MIPS中的位,我已经花了好几个小时来弄清楚如何使我的代码工作,但我仍然迷失了 . 我正在尝试创建一个set0函数,它将接受一个参数,然后将0位设置为1.我相信我应该使用ori指令,但我不知道将什么作为最后一个值 . 到目前为止我有: set0: ori $v0, $a0, 0 jr $ra (这显然是错的 . ) 任何关于如何解决这个问题的建议将不胜感激 . 谢谢 .
  • 0 votes
     answers
     views

    在机器代码中编码Assembly MIPS指令

    我需要编码以下 beq 指令: ... start: addu $8, $9, $10 addiu $8, $8, 0x00FF7A01 beq $8, $0, start ... 我知道它是一个 J 格式的指令,所以除法将是6位到操作码,6到目标地址 . beq 操作码是 000100 ,所以我已经有 0001000100000000 ,但我不知道如何找到剩下的...
  • 0 votes
     answers
     views

    如何表示mips指令,因为它是十六进制表示

    我给了MIPS指令: top: lw $t1, ($t0) beq $s0, $0, end jal func add $s0, $s0, $t0 addi $s0, $s0, -1 j top bne $s0, $0, top end: func: sll $v0, $t1, 4 jr $ra 并告诉我将每行转换为"instruction in hex.&quot...
  • 0 votes
     answers
     views

    在MIPS中索引数组的最佳实践

    当数组的基地址存储在寄存器中时,我的理解是不想调整该寄存器 . 我试图了解该原则何时有效 . 在处理仅保存的寄存器或保存的寄存器和参数寄存器时,这是一种有效的做法吗? 下面是我正在使用的一个示例,涉及将简单的C代码转换为MIPS指令 . 我以两种方式尝试了解决方案 . 在第一个解决方案中,我递增了最初保存数组a和数组b的基址的寄存器 . 我的想法是给定的基地址寄存器$ a0和$ a1是参数寄存器,...
  • 0 votes
     answers
     views

    以mips计算数据未命中率

    我需要一些练习的帮助 . 我必须以mips为单位计算代码片段中数据访问的未命中率 . 我想知道我需要计算哪些指令,我知道加载字(lw)访问内存中的数据,因此我必须将它包含在计数中 . 我还应该计算加载地址(la)和商店字(sw)吗?或者这两条指令不能访问内存中的数据?
  • 0 votes
     answers
     views

    将二进制机器代码转换为MIPS汇编指令

    我很感激这个问题的一些帮助 . 下面的32位数字代表MIPS指令 . 识别不同的字段并说明它是哪条指令 . 给出可以转换成该指令的汇编程序源代码 . 001000 | 10001 | 10010 | 0000000000001111 我将这些位分开,我知道前6位是操作码,给定操作码就意味着Addi . 最后16位是我转换为15的立即值 . 我需要帮助寄存器并将二进制转换为寄存器号 . 我到处寻找,...
  • 0 votes
     answers
     views

    汇编MIPS旋转ROL代码

    我'm trying to solve a problem, but at first I' m测试 rol 指令,我做了一些非常愚蠢的事情,这使我的测试不正确 . 这是一个片段: li $t0, 101 ## our data li $t1, 32 ## our loop because we will rotate 32 times later loop: ## whate...
  • 0 votes
     answers
     views

    MIPS汇编程序uint16作为输入

    如何从控制台输入无符号整数16( uint16 ,半字)并将其存储在MIPS中?我应该将其加载为字符串或int?我知道我可以使用带有不同陷阱代码的系统调用来输入,但是如何输入 uint16 ? read_int 5 read_float 6 read_double 7 read_string 8
  • 0 votes
     answers
     views

    MIPS:将C代码转换为汇编

    我正在尝试将下面的C代码翻译成MIPS汇编语言,但是我很了解它的大部分内容,我对于汇编中第一行的等价物感到遗憾... int ary[3] = {2,3,4}; 如果有人可以看看我的C组装“翻译”并确认我在正确的轨道上,我将不胜感激 . C Code int ary[3] = {2,3,4}; int i=0; //loop to double array values for(i=0; i ...
  • 2 votes
     answers
     views

    处理器如何知道程序的结束?

    我想知道,处理器如何知道何时停止执行程序 . 或者更确切地说,何时停止"fetch, decode execute"循环 .我想到了不同的方法,但不确定哪一个是正确的,或者它们都是错的 .1-也许最后由汇编程序自动添加一条特殊指令让处理器知道这是结束 .2-当它到达无效的内存时(但它是如何识别的) .3-它循环并重新运行程序,但它又如何识别何时循环或者它可能是由汇编程序自动添加...

热门问题