오다기리 박의 알고리즘 노트

4장. 컴퓨터 구조에 대한 두 번째 이야기 본문

운영체제

4장. 컴퓨터 구조에 대한 두 번째 이야기

오다기리 박 2018. 8. 8. 23:17

4장. 컴퓨터 구조에 대한 두 번째 이야기

1. 컴퓨터 구조의 접근방법


  • 1. 레지스터 디자인 (16비트로) - Direct Addressing 모드

    • 레지스터를 디자인하는데 잇어서 결정해야 할 요소

      • 레지스터를 몇 비트로 구성할 것인가?

      • 몇 개 정도로 레지스터를 구성할 것인가?

      • 레지스터 각각을 무슨 용도로 사용할 것인가?

  • 2. CPU에게 일을 시키기 위한 명령어 구조 및 명령어 종류 디자인

    • CPU구성형태 (레지스터 구성형태)에 따라서 명령어 구조가 달라진다.
      -> 어셈블리 언어로 구현된 프로그램은 구조가 다른  CPU로 이식이 불가능하다.

    • 우리가 구성하는 명령어의 형태에 따라서 컨트롤 유닛의 논리회로가 디자인된다.

    • 연산결과는 일단 레지스터에 저장되어야 한다. (첫 번째 피연산자 위치에는 레지스터 이름이 와야 한다)

    • 모든 피연산자에는 메인 메모리의 주소값이 올 수 없다. (피연산자로 올 수 있는 것을 숫자와 레지스터로 제한했기 때문)


2. LOAD & STORE 명령어 디자인


  • LOAD & STORE 명령어의 필요성

    • 메인 메모리 주소 정보는 사칙연산의 피연산자로 올 수 없기 때문에 메인 메모리에 저장된 데이터를 레지스터로 일단 옮겨다 놓은 다음 사칙연산을 진행해야한다.


  • LOAD & STORE 명령어 디자인

      • ‘ source 번지에 존재하는 데이터를 레지스터 destination에 저장하라’


      • ‘레지스터 source에 존재하는 데이터를 메인 메모리 destination번지에 저장하라’


      • LOAD r1, 0x10
        LOAD r2, 0x20
        ADD r3, r1, r2
        STORE    r3, 0x30


3. Direct 모드와 Indirect 모드


  • Direct 모드의 문제점

    • 주소값을 명령어에 직접 표현하는 Direct Addressing 모드로는 할당된 비트 수 안에서 표현 가능한 범위의 메모리 영역만 접근이 가능하기 때문에 메모리의 모든 영역에 대한 접근이 불가능하다.


  • Indirect 모드


      • 0x10번지에서 값이 아닌 주소값을 참조해서 값을 읽어온다.



  • Indirect 모드 활용 예제