일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- private ip
- cache
- Code complete
- page
- interrupt
- ack
- 코드 컴플릿
- Public IP
- addressing mode
- 가독성
- register
- refactoring
- L3 Router
- L2 switch
- TCP
- physical address
- 공인 IP
- floating point
- 명령어
- 사설 IP
- 클린 코드
- MMU
- Clean code
- float
- CPU
- Sector
- network
- osi 7
- 리펙토링
- ALU
- Today
- Total
목록전체 글 (94)
Software Lab

Trap 인터럽트 중에서 0으로 나눌 때 발생하는 divide_error 인터럽트 과정을 살펴보자. ① : CPU가 Process A를 실행 중에 int a = 10 / 0 코드를 가져와서 처리하게 되었다. 그로 인해 0x00번 인터럽트(divide_error)가 발생하게 된다. ② : CPU는 발생한 인터럽트 번호와 IDTR(Interrupt Description Table Register) 값을 더한다. 더한 그 값은 OS의 ISR 함수 포인터가 저장된 메모리 주소이다. ③ : CPU는 이제 ISR의 함수 포인터를 가져와서 실행한다. 인터럽트 번호가 0x00이므로 divide_error를 실행할 것이다. divide_error에서는 Process A를 강제 종료시킬 것이다. OS에 마다 처리 방식은 ..

인터럽트는 3가지 종류가 있다. Trap : 예외 상황에 대한 인터럽트들이다. Divide error(0으로 나누었을 때), Page fault(memory에서 page를 못 찾을 때) 들이 있다. External : I/O 장치들이 발생시키는 인터럽트들로서 Hardware 인터럽트라고도 한다. Keyboard event, Mouse event, Timer 들이 있다. Internal : System call에 의해 발생하는 인터럽트로서 Software 인터럽트라고도 한다. 메모리에는 OS와 여러 프로세스가 올라가 있다. OS에는 인터럽트와 관련하여 IDT, ISR가 있다. IDT(Interrupt Description Table) : ISR의 함수 포인터가 인터럽트 번호순으로 저장된 Table이다. I..

I/O 장치들이 연결된 방식은 다음 두 가지가 있다. Memory mapped I/O : 전체 Address를 주기억 장치와 I/O 장치가 나누어 사용한다. 따라서 Read/Write bus는 주기억 장치와 I/O 장치에 공용으로 연결된다. 현재 ARM, MIPS 계열 CPU에서 사용되고 있다. 왼쪽 그림을 보면 전체 16bit address 공간에서 주기억 장치(Memory)는 0x0000~0xCFFF를, I/O 장치들은 0xD000~0xFFFF을 각각 나누어 사용하고 있다. Isolated I/O : 주기억 장치와 I/O 장치가 각각 별도의 Address를 가진다. 따라서 I/O 장치와 주기억 장치(Memory)의 Read/Write bus가 각각 연결된다. 현재 Intel, AMD 계열 CPU에서 ..

아래 그림에서 왼쪽은 32byte를 저장할 수 있는 Cache 구조이고, 오른쪽은 8bit address를 가지는 메모리이다. address를 2진수로 표현 했을 때 tag, set, word의 3개 영역으로 나뉠 수 있다. 만약 CPU가 메모리에 있던 데이터 B를 사용했다면 Cache에 아래 그림과 같이 복사 된다. 지정된 set, word의 slot에 저장되고 tag 값은 별도로 기록한다. 그런데 B만 복사 되는 게 아니라 같은 block에 있던 다른 데이터들도 함께 복사되는 것을 알 수 있다. 프로그램 데이터는 공간 지역성을 가진다. B가 사용되었다면 근처에 있는 다른 A, C, D 또한 가까운 미래에 사용될 확률이 높다. 이 때문에 block 단위로 복사된다. 다음으로 X, F를 사용해서 다음과 ..

SRAM(Static ram)으로 L1/L2 Cache를 만든다. DRAM(Dynamic ram)으로 주기억 장치인 Memory를 만든다. 아래 그림은 각각 1bit에 대한 회로이다. DRAM은 축전기(Capacitor)을 사용한다. 축전기는 시간이 지나면 자연 방전되므로 전압을 주기적으로 공급(Refresh) 해주어야 한다. 그래서 DRAM(Dynamic ram) 이라고 한다. 반면 SRAM(Static ram)은 그럴 필요가 없으므로 SRAM이라고 한다. 1bit 회로 면적은 SRAM이 DRAM에 비해 대략 4배 이상 더 크다. SRAM, DRAM 같은 반도체를 만들때 웨이퍼에 노광하는데 SRAM이 DRAM에 대비 웨이퍼당 생산량이 적다. 따라서 DRAM으로 만드는 Memory에 비해 SRAM으로 만..

CPU와 저장 장치들(L1 Cache, L2 Cache, Main Memory, Disk) 간에는 아래와 같은 데이터 전송 구조를 가진다. 빈번히 사용되는 데이터 일수록 비싸지만 빠른 장치에 저장된다. 그리고 CPU는 빠른 저장 장치 순으로 데이터를 찾게 된다. L1 Cache, L2 Cache, Main Memory, Disk 순으로 처리 속도가 빠르지만 비싸다. CPU에 비하면 메모리는 느린 장치이다. 만약 L1/L2 Cache 가 없다면 CPU와 메모리 간에 데이터 전송할 때 병목현상이 발생하게 된다. L1 Cache : 저장 장치 중에서 속도가 제일 빠르고 비싸다. CPU가 데이터를 제일 처음 찾는 곳이다. CPU에 데이터를 word 단위로 제공한다. SRAM(Static ram)으로 만든다. L..

프로그램 데이터는 다음 두 가지 특성이 있다. 공간 지역성 : 사용한 데이터의 가까운 주변에 있는 데이터는 가까운 미래에 사용될 확률이 높다. 시간 지역성 : 최근에 사용된 데이터는 가까운 미래에 다시 사용될 확률이 높다. 이러한 특성을 활용하면 가성비 좋은 컴퓨터를 만들 수 있다.

전체 Page table은 용량이 크기 때문에 저장 비용이 저렴한 주기억 장치에 기록된다. 빈번히 사용되는 page no 일부만 저장 비용이 비싼 TLB cache에 기록된다. CPU가 Logical address 내보내면 그것의 page no를 TLB에서 검색한다. 찾게 되면(Hit) Physical address로 즉시 변환한다. 못 찾으면(Miss) 주기억 장치에 저장된 전체 Page table에서 해당하는 page no를 찾아 TLB cache에 기록한다.(Write) PTBR 레지스터는 Page table이 저장된 주기억 장치의 주소를 가리킨다. Page table에는 Mode와 Valid도 있다. Mode : Page에 읽기/쓰기 권한이 있는지를 나타낸다. 만약 특정 Page를 프로그램 코드 ..