컴퓨터의 Instruction set에 대해서 알아보자
Ex ) 3 + 6 = 9
Operands : '3', '6'
Operator : '+'
명령어 사이클의 기본 상태 Diagram을 알아보자
- Instruction fetch : 메모리에 있는 명령어를 가져오는 작업(Op code)
- bring 대신 fetch를 사용한 이유 : CPU가 원하는 명령어의 주소를 메모리에 주고, 해당 주소에 있는 명령어를 받아오는 작업이기 때문에.
- Instruction operation decoding : 가져온 명령어를 해석한다.
- Operand의 주소를 계산해서 Operand를 메모리로부터 가져온다.
- Data Operation : 가져온 Operand와 Op code를 통해서 Data를 계산한다.
- Data의 계산 결과를 어디에 쓸건지 주소값을 계산해서 Data를 저장한다.
간단한 Instruction의 Format이다.
주소의 개수에 따른 명령어 분류
3addresses
Operand 1, Operand 2, Result
a = b + c;
2 addresses
Operand 1, Result
a = a + b
1 address
이미 2번째 주소를 알고 있는 경우
0 (zero) addresses
모든 주소는 암묵적으로 해석된다.
Uses a stack : push a, push b, add, pop c (%rsp 라는 스택 포인터에 쓰는게 이미 지정되어 있음)
4bit processor도 0 address형식을 써서 만들 수 있다.
Systems Control
내부로 갈수록 우선순위가 높아진다.
-> 최고 우선순위 모드는 Kernel mode라고 할 수 있다.
Transfer of Control
Branch
ex) branch to x if result is zero
결과가 0일때 x로 넘어가라
Skip
ex) increment and skip if zero
ISZ R1
ISZ (Increment operand and Skip next instruction if the result is Zero)
위 코드의 R1레지스터의 초기값이 -10이라고 하자
그럼 ISZ 명령어에 따라서 R1값이 0이 될 때까지 반복하라는 의미이다.
Nested Procedure Calls
우리가 흔히 쓰는 함수의 사용 절차를 보여준다.
- Proc1이 호출되면 Proc1이 끝났을 때 실행해야할 코드의 주소인 4101을 Stack에 넣어준다.
- Proc1에서 Proc2를 호출하면 4601을 Stack에 넣어주고 Proc2를 호출한다.
- Proc2가 마무리되면 Stack의 Top에 있는 4601로 돌아가서 다시 Proc1의 코드를 수행한다.
- 그리고 다시 Proc2를 호출하고 4651을 Stack에 넣어준다.
- 반복
위와 같이 되돌아갈 주소를 기억하기 위해서 Stack을 사용한다.
위 Procedure의 Stack현황을 보여준다.
Byte Order
Big-endian
메모리의 낮은 주소부터 시작해서 입력된다
Little-endian
메모리의 높은 주소부터 시작해서 입력된다.
Big-endian과 Little-endian의 차이를 알 수 있다.
address mapping방식에서 확연한 차이가 존재한다.
Intel processor - Little-endian
Internet - Big-endian
'CS > Computer Architecture' 카테고리의 다른 글
[컴퓨터 구조] 컴퓨터 시스템 개요 (2) | 2021.11.24 |
---|---|
[컴퓨터 구조] Addressing Mode (0) | 2021.06.12 |
[컴퓨터 구조] Control Unit (0) | 2021.06.06 |
[컴퓨터 구조] ILP & Superscalar (0) | 2021.06.04 |
[컴퓨터 구조] RISC (feat. CISC) (0) | 2021.06.03 |