1

运行程序(其部分如下所示)以及在 5 个流水线阶段的 MIPS 上运行时所需的最小内存量是多少,对于定点操作,每个阶段需要 2 纳秒?在浮点运算阶段 EX 需要 16 ns。指令仅在其执行所需的流水线阶段的最后数量(假设不存在流水线冲突)。

.data
    Pf1:    .word 0x41400000
    Vet1:   .double 1.0, 2.0, 3.0, 4.0

.text

leaf_example:
    addi $sp, $sp, -48
    sw $s0, 0($sp)
    sll $t0, $s0, 5
label:  addu $t0, $t0, $s2
    sll $t0, $t0, 3
    addu $t0, $a1, $t0
    bgt $t0, $s0, label
    l.d $f18, 0($t0)
4

1 回答 1

0

AFAIK,流水线和在特定阶段花费的时间有助于动态指令计数和/或指令处理时间,而不是存储程序所需的内存。

.text从 0x10010000 开始

.data从 0x00400000 开始

您需要多少内存取决于硬件/芯片组是否可以在不同位置虚拟呈现内存而不需要物理内存来填补空白,这似乎是合理的。

没有虚拟/逻辑内存管理

如果没有提供逻辑内存管理的芯片组或系统,您似乎需要 4194304 字节,如果没有.data部分,则需要 4 MB。如果你有任何东西.data,那么它至少需要 256MB + 64 KB + 你存储的字节数。

在您的示例中,这意味着您需要 256 MB + 64 KB + 36 字节 = 268501028 字节,或大约 256.07 MB。

使用虚拟内存管理

假设您的 MIPS 程序运行在进行虚拟内存管理的平台上。然后系统可以在位置 0x10010000 处显示内存,例如,实际上没有物理定位所有先前的地址(如 0x1000ffff)。

此外,如果您使用修改后的 MIPS 内存布局,此分析可能会起作用。在 MARS 中,您可以通过设置.data从地址 0x0 开始来压缩内存。

这将是指令和数据的直接计算。在您的示例中,由于blel.d是伪指令,它们将指令数量从明显的 8 条增加到 11 条真实机器指令。11 个字.text(44 个字节)加上 9 个字.data(36 个字节)得到 80 个字节。

于 2017-09-13T06:20:17.277 回答