컴퓨터 프로그램은 수많은 Instruction으로 이루어져 있다고 할 수 있다.
개발자가 프로그래밍 언어로 작성한 코드들은 assembly어로 컴파일 되어 OS로 전달되고, OS는 전달 받은 명령을 한줄 한줄 순서대로 읽으며 그 계산을 CPU의 여러 register에게 맡긴다.
✏️ Register
PC(Program Counter) - 다음에 반입할 명령어의 주소를 저장. (명령어를 반입할 주소)
IR(Instruction Register) - PC에 저장되어 있는 주소에 접근하여 현재 수행할 명령어를 가져와 저장. (반입한 명령어)
PSW(Program status word) - 지금 실행되고 있는 프로그램이 OS 커널인지, 사용자 프로그램인지 구분하는 상태 코드를 저장. 그에 따라 CPU가 접근할 수 있는 데이터의 범주 권한이 달라짐.
MAR(Memory Address Register), MBR(Memory buhher register)
- CPU가 실제 메모리에 접근할 때 쓰이는, 메모리와 CPU 사이 interface 역할을 맡는 레지스터.
이 외의 레지스터들은 보통 CPU에서 메모리 데이터 참조를 최소화하여 데이터 처리의 효율성을 높이는 역할을 한다.
✏️ Instruction
하나의 instruction은 Opcode(연산자)와 Oprand(피연산자)로 구성되어 있다.
Opcode는 mov, add, jump와 같은 연산 기호로 데이터 처리, 조건문, 메모리에 있는 데이터를 불러오거나 저장, I/O와 통신하는 작업으로 분류할 수 있다.
Oprand는 연산할 데이터를 저장하고 있는 메모리 주소가 담겨있다.
이 opcode와 oprand가 하나의 instruction에서 차지하는 크기는 ISA마다 각각 다르다.
Instruction 수행
먼저 MAR, MBR이 메모리에 접근하여 PC 레지스터에 저장되어 있는 주소에서 IR 레지스터로 명령어를 가져오고,
다시 PC 레지스터에 메모리의 다음 명령어 주소를 넣는다. (여기서 IR에 실행할 명령어를 가져오는 과정을 Fetch라 한다.)
'CS' 카테고리의 다른 글
[CS 면접 준비] 컴퓨터 네트워크 (0) | 2023.04.14 |
---|---|
gdb로 register와 memory 변화 확인하기 (0) | 2022.09.05 |
어셈블리어 / ASM code (0) | 2022.09.05 |
[인터넷 프로토콜] Security Attack / Passive and Active Attacks (0) | 2022.05.23 |
[인터넷 프로토콜] 모바일 IP (0) | 2022.04.26 |