오래 못 할 짓 하지 않기

[ 컴퓨터 구조 ] 1. RISC / MIPS 본문

2학년 2학기/컴퓨터 구조

[ 컴퓨터 구조 ] 1. RISC / MIPS

쫑알bot 2023. 6. 27. 16:50
728x90

 

시작 전 간단히 알고 가야하는 지식들

 

1. 메모리

  • 프로그램이 실행되기 위해서는 필요한 정보들이 메모리에 저장되어 있어야 한다.
  • 메모리는 실행되는 프로그램의 [ 명령어 ][ 데이터 ] 를 저장한다.
  • (?)메모리의 저장된 값의 위치는 주소로 알 수 있다. ( 데이터를 주소로 접근하는 것 같음 )

 

2. CPU (메모리의 내용을 실행하는 곳)

 

  • CPU는 메모리에 있는 데이트를 읽어 들이고, 해석하고, 실행하는 장치이다.
    메모리 = 냉장고, 데이터 = 음식 , CPU = 부엌

구성요소

  • ALU : 계산기
  • 레지스터 : CPU 내부의 작은 저장장치
  • 제어장치 : 제어 신호를 보내고 해석 

 


 

RISC / MIPS


 

 

 

 

우선 비교를 하려면 CISC 개념이 필요할 듯하다.

 

CISC CPU의 동작을 보면

 

MOVS - string을 mov(옮기는) 작업을 한다고 할 때, 사용한다.

 

밑에 있는 Hello 를 다른 주소에도 옮기려고 할 때,

CPU에 명령을 줄 때,

 

1. Source adderss 설정 ( 메모리의 어느 adderss에 있는 데이터를 가져올지 ) SI = Source Index

2. Destination address 설정 ( 메모리의 어느 address에 가져다 놓을지 )    DI = Destination Index 

3. CX 설정 ( 몇 개를 가져올지 )  CX = Counter

 

ex) Hello 가 100번째 메모리에 있고, 이거를 200번째에 옮길 건데, SI , DI, CX를 설정해 봐라

SI = 100 / DI = 200 / CX = 5 (5글자니까)

 

특징 ) 글자 수나 주소에 따라 코드가 달라져야 해서 간단하고 가변적 ( 다른 말로 바꿔야 해서 귀찮다 )

 

 


 

RISC  

Reduce Instruction Set Computer

: 동작을 간단하게 줄인 체계

 

CISC의 동작들을 여러 개로 나누었다.

 

1. 메모리에서 H를 Load한다. --> ponter 변수 X를 만들어서 걔를 Load한다.

2. X의 값을 다른 주소에 Load 한다.

3. 그 Load한 값을 Store한다.

 

이런 식으로 동작을 나눈다.

 

 

RISC 의 특징 ) 코드의 길이가 늘어나긴 하지만 , 고정적이라 편하다. 

 

ex) 두부 잘라라.

CISC : 1. 두부 찾고  칼 꺼낸 뒤에 바로 자른다.

RISC : 1. 자를 대상 찾기  2. 칼 꺼내기 3. 모양 잡기 4. 썰기

 

CISC는 재사용 안 됨, 과일 깎으라 하면 또 그거에 맞게 만들어야 함.

RISC는 코드가 길긴 해도 재사용 가능, 과일 썰기도 되고 다 됨 

 

 

RISC가 쓰이는 곳 = MIPS

 


 

 

MIPS는 3가지 종류가 있다.

R (Register) / I (Immediate) / J (Jump)

 

  • R 명령은 모든 Operand(피연산자) Register로 이루어져서, Load -> Store 연산을 수행한다.

        rs = Source of Register           피연산자 1

        rt =  Target of Register            피연산자 2

        rd = Destination of Register    결괏값이 갈 곳

 

양쪽에는 Operation code 와 Function code 가 양쪽에 있는데, 그것들은 어떤 연산을 할지 정한다.

 

 

  • I 명령Operand가 Register를 통해서가 아니라 Immediate value가 필요할 때 사용하는 명령.

    여기에서는 rs와 rt가 쓰임.   

    constant value = 피연산자 1
    rs                     = 피연산자 2
    rt                      = 결괏값이 갈 곳

    쓰이는 곳:  ADDI( add i ) , LW SW ( Load, Store )  ,  BEQ or BNE (조건부 branch 명령)

Immediate value는 16bit 가능

 

  • J 명령은 지정된 Address로 이동하는 명령어다.

 

 

 

 

 


 

주로 쓰일 때 어떤 종류가 쓰이는지 정리해 놓은 것.

R타입 : ADD를 보자. ADD rd, rs, rt를 할 때는 [ rd = rs + rt ]인데

I타입  :  ADDI --> ADDI rt, rs, imm16을 하면 [ rt = rs +se(imm16) ]이 나온다. 

이때, se(imm16)  -->  se=sign extention (0 확장) 16을 그냥 10000이 아니라 32비트로 만들어서 000... 010000으로 보존하는 것

 

 

 

참고 : https://wpaud16.tistory.com/187

https://midascopp.tistory.com/93

https://jyukki.tistory.com/13