1.Computer System Overview(‘16. 3. 9.)
1) basic elements
proccessor + Main memory + I/O modules + System
bus
- proccessor – cpu(control
unit + register + ALU)
- Main memory – DRAM, volatile
(비휘발성 memory –연구중),(real,primary
memory)
- I/O modules – secondary
memory devices, communication equipment, terminals
- system bus – cpu, memory,
I/O modules 간 communication
2) register
- CPU에 위치한 고속메모리.
- CPU가 반복적 또는 주기적으로 처리하는 도중의 일시적인 정보는 CPU 내부의 레지스터에 저장하는 것이 효율적
- 데이터를 저장하는 register 외에, 특수한 용도로 사용되는 register들이 존재함
1. User-visible registers
① data regiser ② address register (index,
segment pointer, stack pointer)
–
사용자가 main memory reference 최소화를 통한
optimize 가능
- machine
language를
사용하여 모든 프로그램에서 접근 가능
(ex - c언어에서 자주쓰이는 부분을 어셈블리어로 embedding 하여 최적화)
2. User-Invisible registers(cpu 전용 레지스터)
1] internal register for data I/O
①MAR(memory address register) - 다음번에 읽고 쓸 메모리의 주소를 저장
②MBR(memory buffer register) - 메모리로부터 읽어온 or 써야할
데이터를 저장
③I/O address register – 입출력 모듈의 주소 저장
④I/O buffer register – 입출력 모듈과 cpu의 데이터
교환을 위해 사용.
2] Control and Status registers
①PC(program counter) - 다음번에 fetch될 instruction의 주소 저장, fetch후 1씩 증가
(fetch : memory로부터 instruction을
읽어서 IR에 저장하는 것)
②IR(instruction register) - 가장 마지막에 fetch 된 instruction 저장
- instruction categories
1] processor – memory
(load,store) 2] processor – I/O device (read,write)
3] data processing (add,subtract..) 4] control
(jump..)
③PSW(program status word) - 연산이나 명령어 실행 후의 정보를 저장하는 제어 워드
- 모든 정보를 비트단위로, 하드웨어적으로 0 or 1로 설정하여 현재 상태 표시
1] condition codes(postive,negative,zero,overflow)
2] interrupt(enable,disable)
3] supervisor/user mode – 현재 instruction이 어느 권한의 code인지 저장
3] 연산관련 registers
①AC(Accumulator)
- 데이터를 임시 저장하는 레지스터
- 기억장치로부터 가져온
데이터, 연산 수행후 결과 값 모두 AC에 저장된다.
- Word(cpu가 한번에 처리 할수
있는 데이터의 비트 수) 단위
+] 커널모드와 유저모드
유저
애플리케이션이 운영체제에 치명적인 데이터에 접근하여 수정하거나 삭제하지 못하게 막기위해 윈도우는 두가지 프로세서 접근 모드를 지원함. 유저 어플리케이션은 유저모드에서만, OS코드(device driver, 시스템 서비스 등)은 커널 모드에서만 실행이
된다. 유저모드에서는 하드웨어에 직접 접근할수 없으며, 커널모드는
모든 시스템 메모리와 모든 cpu instruction에 접근이 허가된 실행모드이다.
유저
애플리케이션에서 하드웨어와 같은 시스템자원에 접근하기 위해서는 system call을 통해 커널모드에
진입하여야 함. 커널모드에서 작업 완료후 다시 유저모드로 전환됨.
하드웨어가
지원하는 dual mode가 없을 경우 운영체제에 심각한 결점을 초래할 수 있다. 예를 들어 잘못된 사용자 프로그램이 운영체제 부분에 자료를 덮어 운영체제를 지워버릴 수 있고, 여러 프로그램이 동시에 한 장치에 기록할 수도 있다.
+] system call
OS코드의 일부분으로 일종의 API(애플리케이션에서
사용할수 있도록 운영체제나, 언어가 제공하는 기능을 제어할수 있도록 만든 인터페이스의 집합체)
사용자가
커널에 진입할수 있는 유일한 수단.
Q] 왜 방금 수행한 연산의 결과(+,-,0,overflow..)를 PSW에 별도로 저장할까?
A] CPU내에 오류감지에 필요한 정보가 있어야, 빠르게 오류를 검출할 수 있음.
매 instruction이 끝날 때 마다 오류를 검사.
3) Instruction execution
1. fetch – PC가 가리키는 memory 주소로부터 instruction을 읽어서 IR에 저장
1] MAR <- PC 2] MBR <- M(MAR), PC <- PC
+1 3] IR <- MBR
2. execute – instruction을 해독하고 명령을 실행.
ex) load 1] MAR <- IR 2] MBR <- M(MAR) 3] AC
<- MBR
ex) add 1] MAR <- IR 2] MBR <- M(MAR) 3] AC
<- AC + MBR
ex) store 1] MAR <- IR 2] MBR <- AC 3]
M(MAR) <- MBR
- 이 cycle은 1클록에 1번씩
이루어짐.
+] 32bit, 64bit의 차이
32비트 CPU 는 32비트 주소 지정 방식(32bit
Addressing)을 사용하며, 그래서 할당할 수 있는 전체 메모리 공간의 개수도 이에
맞춰 최대 2^32개이다. 따라서 최대 4GB의 메모리를 사용할 수 있는 것.(물론 실제로는 3.5GB 정도임, reseverd된 영역 존재) 64bit의 경우 최대 16GB의 메모리를 사용 가능함.
댓글 없음:
댓글 쓰기