일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- DB
- XML
- Algorithm
- web
- DATAPATH
- Linux
- architecture
- MacOS
- while
- computer
- Pipelining
- mysql
- javascript
- function
- data structure
- Java
- DS
- php
- MIPS
- CSS
- control
- Class
- html
- instruction
- github
- python
- system
- for
- DoM
- react
- Today
- Total
목록MIPS (35)
YYYEJI
Edge triggered 실행방법 ① State element의 값들이 읽는다. ② Combinational logic을 통해서 값들이 흘러간다. ③ Clock이 1일 때, 새로운 값들이 state element에 업데이트된다. • 어떤 값이 f.f에 쓰여지기 위해 state element(f.f) 전에서 대기하고 있다. • Clock이 1로 바뀌면 값들이 state element에 저장된다. • Combinational logic의 영향을 받은 값들이 그대로 흘러서 f.f 전에 새로운 값들이 대기하고 있다. Cycle time • Cycle time ↓, Frequency ↑, Execute time ↓ • Cycle time ↑, Frequency ↓, Execute time ↑ Note) Cloc..
D-latch란? 2개의 입력만을 가지는 latch입니다. • Clock signal(c)이 1이 될 때 결과가 저장됩니다. • Q'는 Q의 complement된 값입니다. (Q = 1이면 Q' = 0, Q = 0이면 Q' = 1) 예제를 살펴봅시다. D: D-latch C: Clock Q: output • C가 0이면 D의 값이 아무리 바껴도 Q가 값이 바뀌지 않습니다. • C이 1이 되면 Q의 값이 D의 값을 따라갑니다. D-latch는 여러 문제점이 있는데, 그 중 가능 큰 문제점은 제어가 힘들다는 것입니다. 그래서 D-latch를 두 개 연결한 F.F.(flip flops)이 등장합니다. • 첫 번째 D-latch를 지나간 값을 clock이 1일 때, Q(Y)에 저장합니다. (Rising edge..
ALU(Arithmetic Logic Unit)과 같이 데이터 값을 연산하는 elements가 있습니다. ① Combinational circuit 결과(output)가 현재 입력된 input에만 관련되어 있습니다. output = f(input) ② Sequential circuit 결과(output)이 현재 입력된 값(input)과 현재 상태(current state)에 관련되어 있습니다. output = f(input, current state) • Asynchronous - unclocked Clock signal 없이 제어되기 때문에, 분석/디자인이 조금 더 어렵습니다. • Synchronous - clocked Clock signal에 의해 제어가 되기 때문에, clock을 보면 circuit..
IEEE (Institute of Electrical and Electronics Engineers) 에서는 F.P에 대한 표준 format을 가지고 있습니다. Machine code로 F.P를 표현하기 위해서 IEEE 754 format을 사용합니다. (2진수로 부동소수점으로 표현하라는 의미입니다.) 왜 필요할까요? ① Fraction 표현 Ex) 3.1416 . . . ② 매우 작은 숫자를 표현 Ex) .000000001 ③ 매우 큰 숫자를 표현 Ex) 3.12345 x 10^n 하기 위해서 입니다. Format을 알아봅시다. ① Scientific notation coefficient X (base number) ^ exponent Ex) 7.1234 X 10^4 , 0.1234 ^ 10^9 ② N..
MIPS version 나눗셈 연산을 알아보기 전에 나눗셈 format을 살펴보겠습니다. 0001001 # quotient ---------------- 1000 | 1001010 # Divisor and Dividend - 1000 ---------------- 10 # Partial remainder ........ ---------------- 10 # Remainder 본격적으로 MIPS 나눗셈 수행 방식을 알아보겠습니다. 알고리즘은 아래와 같습니다. partial에서 remainder가 divisor보다 크거나 작으면 quotient bit가 1이 됩니다. 반대로 작으면 quotient bit는 0이 됩니다. MIPS에서 나눗셈 수행 결과는 HI register와 LO register에 담기는데..
MIPS version 곱셈 연산을 알아보기 전에 곱셈 format을 살펴보겠습니다. 0010 # multiplicand X 1001 # multiplier ---------------------------------- 0010010 # product 본격적으로 MIPS 곱셈 수행 방식을 알아보겠습니다. MIPS는 곱셈을 하는데 있어서 하드웨어를 줄이는 방법으로 발전해 왔습니다. (In MIPS, Multiplier은 계속 오른쪽으로 shift 시키기 때문에 생략하겠습니다.) Version 1 Multiplicand를 왼쪽으로 움직이고, product는 움직이지 않습니다. (Using shift left logic) Version2 Multiplicand와 product를 상대적으로 생각해서 Multip..
** C code를 기준 ** 아래 코드를 MIPS assembly code로 변환해 보겠습니다. #include int main(void){ int i = 1; int sum = 0; int n = 15; while(in) goto exit div $t0, $t2 # hi = i/3 mfhi $t3 # t3 = hi bne $t3, $zero, loop # if (t3 != 0) goto loop add $t1, $t1, $t0 # sum += i j loop exit: li $v0, 4 la $a0, str1 syscall li $v0, 1 add $a0, $zero, $t1 syscall .end .text 코드를 하나하나 살펴보면 main: addi $t0, $zero, 0 # i = 0 addi..
** C code를 기준 ** 아래 코드를 MIPS assembly code로 변환해 보겠습니다. i = 0; while (a[i] == k) i++; C to MIPS assembly addi $s0, $zero, 0 # i = 0 loop: sll $t0, $s0, 2 # t0 = i*4 addi $t0, $t0, $s2 # t0 = t0 + &a[0] lw $t1, 0($t0) # t1 = a[t0] bne $t1, $s1 exit # if (t1 != s1) goto exit addi $s0, $s0, 1 # i = i + 1 j loop # goto loop exit: $s0 - i $s1 - k $s2 - a[0] 코드를 하나하나 살펴보면 addi $s0, $zero, 0 # i = 0 우선 ..