1. 程式人生 > >20155222盧梓傑 課下測試04補做

20155222盧梓傑 課下測試04補做

但是 value possible com nat lec make 定時 install

20155222盧梓傑 課下測試04補做

  • 1.SEQ+對SEQ的改變有()
    A . PC的計算挪到取指階段
    B . PC的計算挪到訪存階段
    C . 電路重定時
    D . 插入流水線寄存器
    E . 對信號進行重排和標號
    F . 處理流水線冒險
    正確答案: A C D E F
    解析:在SEQ+中,創建狀態寄存器來保存在一條指令執行過程中計算出來的信號。然後,當一個新的時鐘周期開始時,這些信號值通過同樣的邏輯來計算當前指令的PC。
    SEQ+中對狀態元素的改變稱為電路重定時,在SEQ+的各個階段之間插入了流水線寄存器,並對信號重新排列。

  • 2.圖中的代碼說明異常處理的細節問題是()
    技術分享圖片

A . 同時多條指令引起異常
B . 指令執行引起異常,後來由於分支預測錯誤,取消了該指令
C . 不同階段更新系統狀態的不同部分
D . 與流水線無關的異常
正確答案: B
解析:在這個程序中,流水線會預測選擇分支,因此他會取出並以一個值為0xFF的字節作為指令。譯碼階段會因此發現一個非法指令異常。稍後,流水線會發現不應該選擇分支,因此根本就不應該取出位於地址0x00e的指令。流水線控制邏輯會取消該指令,但是我們想要避免出現異常。

  • 3.Y86-64中()指令沒有訪存操作.
    A . rrmovl
    B . irmovq
    C . rmmovq
    D . pushq
    E . jXX
    F . ret
    正確答案: A B
    解析:rrmovl是寄存器-寄存器傳送,irmovq是立即數-寄存器傳送,不需要訪存。

  • 4.在Y86-64中,對一條跳轉指令,決定是不是應該選擇分支的階段是()
    A . fetch
    B . decode
    C . execute
    D . memory
    E . write back
    F . PC update
    正確答案: C
    解析:在執行階段,算數/邏輯單元(ALU)要麽執行指令指明的操作(根據ifun的值),計算存儲器引用的有效地址,要麽增加或減少棧指針。得到的值我們稱為valE。在此,也可能設置條件碼。對一條跳轉指令來說,這個階段會檢驗條件碼和分支條件,看是不是應該選擇分支。

  • 5.Y86-64中,指令執行分為()階段
    A . 3
    B . 4
    C . 5
    D . 6
    E . 7
    F . 8
    正確答案: D
    解析:取指(fetch)、譯碼(decode)、執行(execute)、訪存(memory)、寫回(write)、更新PC(PC update)

  • 6.一個典型的寄存器文件包括()
    A . 讀端口
    B . 控制端口
    C . 寫端口
    D . 時鐘
    正確答案: A C D
    解析:寄存器文件有兩個讀端口,還有一個寫端口。這樣一個多端口隨機訪問存儲器允許同時進行多個讀和寫操作。向寄存器文件寫入字是由時鐘信號控制的。

  • 7.Y86-64中,使用時鐘寄存器保存()
    A . the program counter (PC)
    B . the register file(%rax-%r14)
    C . the condition codes (CC)
    D . the program status (Stat)
    正確答案: A C D
    解析:每當每個時鐘到達上沿時,值才會從寄存器的輸入傳送到輸出。我們的Y86處理器會用時鐘寄存器保存程序計數器(PC)、條件代碼(CC)和程序狀態(Stat)。

  • 8.In this circuit, the 2-bit signal code would then control the selection among the four data words A, B, C, and D. We can express the generation of signals s1 and s0 using equality tests based on the possible values of code,which is true( )
    A . bool s1 = code == 2 || code == 3;
    B . bool s0 = code == 2 || code == 3;
    C . bool s1 = code in { 2, 3 };
    D . bool s1 = code in { 2, 3 };
    正確答案: A C
    解析:在這個電路中,兩位的信號code就可以用來控制四個數據字A、B、C和D做選擇,根據可能的code值,可以用相等測試來表示信號s1和s0的產生:
    bool s1 = code == 2 || code == 3;還有一種更簡潔的方式來表示這樣的操作:dangcode在集合{2,3}中s1為1:bool s1 = code in { 2, 3 };

  • 9.下圖中能實現subq的是()
    技術分享圖片

A . 0
B . 1
C . 2
D . 3
正確答案: B

  • 10.下面HCL代碼的功能是()
    技術分享圖片

A . 求ABC中的最大值
B . 求ABC中的最小值
C . 對ABC從小到大排序
D . 對ABC從大到小排序
正確答案: B

  • 11.有關下圖說法正確的是()
    技術分享圖片

A .
int out = [
s:A
1:B
];
B .
int out = [
s:A
0:B
];
C .
int out = [
A:s
B:1
];
D .
int out = [
A:s
B:0];

正確答案: A
解析:同c語言的switch語句不同,我們不要求不同的選擇表達式只見互斥。從邏輯上講,這些選擇表達式是順序求值的,且第一個求值為1的情況會被選中。

  • 12.下面說法正確的是()
    A . ALU是一種時序電路。
    B . ALU是一種組合電路。
    C . 寄存器是一種時序電路
    D . 寄存器是一種組合電路
    正確答案: B C
    解析:區分在有沒有時鐘

  • 13.有關HCL,下面說法正確的是()
    A:技術分享圖片

B:技術分享圖片

C:技術分享圖片

A . 圖A中位級與非門的HCL表達式是 bool Y = !(A&&B)
B . HCL表達式a||!a的值是1
C . B圖對應的HCL描述是 bool eq=(a&&b)||!(a&&b)
D . C圖可以用來實現if..else功能
正確答案: A B D
解析:B有兩個輸入a和b,有唯一的輸出eq,當a和b都是1或都是0時,輸出為1。C圖是一個多路復用器。多路復用器根據輸入控制信號的值,從一組不同的數據信號中選出一個。

  • 14.與、或、非三種邏輯門可以用一種門()實現。
    A . 與非門
    B . 與門
    C . 或非門
    D . 或門
    正確答案: A C
    解析:與、或、非三種邏輯門可以用一種門(與非門, 或者 或非門)實現。
    重要意義在於:一旦物理上實現了Nand,就可以用Nand構建任意布爾函數的物理實現。
    技術分享圖片

  • 15.下圖中,out = a&&b的是()
    A:技術分享圖片

B:技術分享圖片

C:技術分享圖片

A . A
B . B
C . C
D . None of all
正確答案: B

  • 16.實現一個數字系統需要的組成部分有()
    A . combinational logic to compute functions on the bits
    B . memory elements to store bits
    C . hardware control language
    D . clock signals to regulate the updating of the memory elements.
    正確答案: A B D
    解析:要實現一個數字系統需要三個主要的組成部分:計算對位進行操作的函數的組合邏輯、存儲位的存儲器元素,以及控制存儲器元素更新的時鐘信號。

  • 17.安裝YIS用到的Linux命令有()
    A . wget
    B . ln
    C . ping
    D . tar
    E . ls
    F . pwd
    正確答案: A B D
    解析:cd
    ~/Code/shiyanlou_cs413
    wget
    http://labfile.oss.aliyuncs.com/courses/413/sim.tar
    tar -xvf sim.tar cd
    sim
    sudo apt-get install bison flex tk
    sudo ln -s
    /usr/lib/x86_64-linux-gnu/libtk8.6.so /usr/lib/libtk.so
    sudo ln -s
    /usr/lib/x86_64-linux-gnu/libtcl8.6.so /usr/lib/libtcl.so
    make

  • 18.有關Y86-64的狀態碼,下面說法正確的是()
    A . AOK表示正常操作
    B . AOK的值是0
    C . HLT表示遇到非法指令
    D . 3表示遇到非法地址
    正確答案: A D
    解析:
    1 AOK 正常操作
    2 HLT 處理器執行halt命令
    3 ADR 遇到非法地址
    4 INS 遇到非法指令

  • 19.Y86-64中共有()個跳轉指令。
    A . 7
    B . 6
    C . 2
    D . 4
    正確答案: A
    解析:jmp、jle、jl、je、jne、jge、jg。

  • 20.Y86-64中"addq %rax, %rcx"對應的機器碼是()
    A . 6010
    B . 6001
    C . 60010000000000000000
    D . 00000000000000006001
    E . 00000000000000006010
    F . 60100000000000000000
    正確答案: B
    addl 60 subl 61 andl 62 xorl 63
    jmp 70 jne 74 jle 71 jge 75 jl 72 jg 76 je 73
    rrmol 20 cmovne 24 cmovle 21 cmovge 25 cmovl 22 cmovg 26 cmove 23
    0 %eax 1 %ecx 2 %edx 3 %ebx 4 %esp 5 %ebp 6 %esi 7 %eadi F 無寄存器

  • 21.Y86-64中"rrmovq %rax, %rcx"對應的機器碼是()
    A . 2001
    B . 2010
    C . 20010000000000000000
    D . 00000000000000002001
    E . 00000000000000002010
    F . 20100000000000000000
    正確答案: A

  • 22.Y86-64的指令編碼長度是()字節
    A . 1
    B . 2
    C . 8
    D . 9
    E . 10
    F . 2-10
    G . 4-10
    H . 1-10
    正確答案: H
    解析:指令編碼長度從1-6個字節不等。一條指令含有一個單字節的指令指示符,可能含有一個單字節的寄存器指示符,還可能含有一個四字節的常數字

  • 23.Y86-64指令支持的整數操作的長度是()
    A . 1字節
    B . 2字節
    C . 4字節
    D . 8字節
    E . 都可以
    正確答案: D

  • 24.Y86-64中有()個程序寄存器
    A . 8
    B . 16
    C . 15
    D . 14
    正確答案: C
    解析:%eax %ecx %edx %ebx %esp %ebp %esi %eadi ZF SF OF PC Stat DMEM

  • 25.Y86-64中程序員(匯編程序員、編譯器等)可見的狀態包括()
    A . 程序寄存器
    B . 條件碼
    C . 程序狀態
    D . 程序計數器(PC)
    E . 內存
    正確答案: A B C D E
    解析:Y86程序中的每條指令都會讀取或修改處理器狀態的某些部分。這成為程序員可見狀態。

20155222盧梓傑 課下測試04補做