CS02_Instruction

이혜윤·2023년 4월 7일
3

OS

목록 보기
3/4

1. Addressing Mode

: Operand 어떻게 표시할 것인가. 데이터가 들어있는 위치(주소)를 어떻게 표시할 것이냐.

  • EA: 유효 주소. Effective Address. 데이터가 저장된 기억장치의 실제 주소
  • A: 명령어 내 주소 필드 내용(Operand 내용이 기억장치 주소)
  • R: 명령어 내 레지스터 번호(Operand 내용이 레지스터 번호)
  • (A): 기억 장치 A 번지의 내용
  • (R): 레지스터 R의 내용

1.1 명령어의 operand에 data 포함

1.1.1 Implied Mode 묵시적 주소지정 방식

  • 명령어에 주소를 지정하는 영역이 존재X. 이미 정해진 주소를 사용. (스택의 SP가 가리키는 주소부를 암시)

1.1.2 즉치 주소지정 방식

  • instruciton(data) (not in 메모리)
  • 데이터가 명령어에 포함되어 있는 방식
  • 오퍼랜드의 필드 내용이 연산에 사용할 실제 데이터
  • 용도: 프로그램에서 레지스터나 변수의 초기 값을 어떤 상수 값(constant value)으로 세트하는데 유용하게 사용
  • 데이터를 인출하기 위해 기억장치를 액세스할 필요가 없음
  • 상수 값의 크기가 오퍼랜드 필드의 비트 수에 의해 제한됨
ADD R1, #3
R1<-R1+#3

1.2. 데이터가 저장된 메모리의 주소를 지정

1.2.1 Direct Addressing 직접 주소 지정 방식

  • instruction(메모리주소->메모리(data))
  • EA=A
  • 장: 데이터 인출을 위해 한 번의 기억장치 액세스만 필요
  • 단: 연산 코드를 제외하고 남은 비트들만 주소 비트로 사용될 수 있으므로 직접 지정할 수 있는 기억 장소의 수가 제한됨.
ADD R1, (0x1111);
R1<-R1+M(0x111)

1.2.2 (Memory)Indirect Addressing 간접 주소 지정 방식

  • instruction(메모리 주소->메모리(메모리주소->메모리(data)))
  • EA=(A)
  • 최대 기억장치 용량이 단어의 길이에 의하여 결정
  • 주소 지정 가능한 기억장치 용량 확장
  • 실행 사이클 동안에 두 번의 기억장치 액세스 필요
ADD R1, @(R2);
R1<-R1+M(M(R2))
  • 명령어 형식에 간접비트 필요
    -간접 주소 지정방식이므로 1

1.3 데이터가 저장된 register를 지정

1.3.1 Register Addressing 레지스터 주소지정 방식

  • instruction(register(data))
  • EA=R
  • 주소 지정에 사용될 수 있는 레지스터들의 수=2^k개 (k는 R필드의 비트 수)
  • 오퍼랜드 필드의 비트 수가 적어도 된다.
  • 데이터 인출을 위해 기억 장치 액세스가 필요 없기 때문
  • 데이터가 저장될 수 있는 공간이 CPU 내부 레지스터들로 제한됨
ADD R4, R3
R4 <- R4+R3

1.3.2 Register Indirect Addressing 레지스터 간접 주소 지정 방식

  • instruction(register(메모리주소->메모리(data)))
  • EA=(R)
  • 주소 지정할 수 있는 기억장치 영역이 확장
    - 레지스터 길이 =16bit라면, 주소 지정 영역=2^16=64Kbyte
    • 레지스터 길이 =32bit라면, 주소 지정 영역=2^32=4G byte
  • 구현이 상대적으로 어렵고 비용 상승
ADD R1, (R2);
R1 <- R1+M(R2)

1.3.3 Register Indirect Addressing with indexing 변위 지정 방식

  • instruction(register(메모리주소값))+ instruction의 주소필드(더해서 읽을 주소 값) -> 메모리(더한값주소->(data))
  • EA=A+(R)
  • array 구조에 유용한 대신 많은 시간이 요구됨

사용 되는 레지스터에 따라 여러 종류의 변위 주소지정 방식 정의
1.3.3+ relative addressing mode 상대 주소지정 방식

  • EA=A+(PC)

1.3.3+ indexed addressing mode 인덱스 주소지정 방식

  • EA=(BR)+A

1.3.3+ base-register addressing mode 베이스-레지스터 주소지정 방식

  • EA=(BR)+A

1.3.? 이건뭐지

  • instruction(register(메모리주소->메모리(메모리주소->메모리(data))))

2. Instructoin

2.1 Instructon Set

1) Register Type

  • 연산이 Register의 데이터에서만 이루어지는 명령어

2) Data Load from Memory

  • 연산에 필요한 데이터가 외부 메모리에 존재하여 메모리로부터 데이터를 읽는 동작이 필요한 명령어

3) Data Save to Memory

  • 연산 결과를 외부 메모리에 저장하는 명령어

4) Jump(Branch)

  • 명령어 진행 순서를 변경하는 명령어 (flow control)
  • branch, subroutine call .etc

2.2 ALU (Arithmetic and Logic Unit)


2.3 Control Unit

2.3.1 정의

IR 에 의해 해석된 명령어 수행을 위해 CPU 내/외부 동작 제어를 위한 제어 신호를 발생하는 장치

2.3.2 기능

  • OP code 해독
  • 신호 제작
  • 명령어 실행에 필요한 제어신호 발생시키기
  • Micro Operation 초기화

2.3.3 구현 방식

1) 고정 배선 방식 (Hard-Wired)

  • 하드웨어 고정회선. 모든 제어 로직을 FIX
  • RISC (고정된 명령어 길이) 에서 주로 활용
  • 하드웨어 회로로 제어신호를 생성하여 고속 처리
  • 고가
  • 오류 발생률 높음

2) S/W 방식 (Micro Programming)

  • 소프트웨어적 제어신호 생성으로 저속
  • Firmware 구조이므로 기능 개선 용이
  • HW 단순
  • 저가
  • CISC에서 주로 활용

3. MU0-Execution Step

3.1 Fetch Instruction

  • PC가 가리키는 데이터(명령어)를 읽어 IR에 넣겠다.
  • PC -> Address bus -> memory -> data bus -> IR

3.2 Instruction Decode

  • OP code를 분할해서 control signal을 만들겠다.
  • 그동안 PC값은 ALU의 연산 기능을 이용하여 값 +1 하겠다.

3.3 Operand Fetch

  • IR -> address bus -> memory -> LOAD라면 ACC , ADD라면 ALU

3.4 Execute Instruction

  • 파란색 : ADD 명령일 경우의 CYCLE
    • ALU와 ACC에 들어온 data에 대해 ALU에서 연산한 후에 ACC에 write back
    • Memory -> data bus -> ALU,ACC / ALU -> ACC
  • 핑크색: STORE 명령일 경우의 CYCLE
    • IR -> Memory, ACC->Memory

3.5 STORE 중 Write BACK

  • ALU -> ACC -> data bus -> Memory
profile
구르미 누나

0개의 댓글