일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- osi 7
- interrupt
- floating point
- private ip
- 명령어
- MMU
- Public IP
- refactoring
- 사설 IP
- 코드 컴플릿
- page
- L3 Router
- L2 switch
- addressing mode
- network
- ALU
- 리펙토링
- Sector
- cache
- float
- Code complete
- Clean code
- 공인 IP
- 가독성
- register
- 클린 코드
- physical address
- ack
- TCP
- CPU
- Today
- Total
목록전체 글 (94)
Software Lab

1. load 명령어 처리 ① : PC에서 MAR로 주소를 복사한다. ② : MAR의 주소는 address bus로 출력된다. ③ : controller는 control bus 중에서 read 신호를 출력한다. ④ : 주소와 read 신호를 받은 memory는 그 주소에 저장된 명령어를 data bus로 보낸다. ⑤ : 명령어는 MBR에 입력된다. ⑥ : 명령어는 MBR에서 IR로 복사된다. ① : Decoder는 IR에 있는 명령어를 해석한다. ② : 명령어에서 주소를 MAR로 복사한다. ③ : MAR의 주소는 address bus로 출력된다. ④ : load 명령어의 실행 절차를 시작한다. ⑤ : controller는 control bus 중에서 read 신호를 출력한다. ⑥ : 주소와 read 신호..

CPU는 명령어의 인출-실행 과정을 반복한다. 인출(Fetch) : CPU가 메모리(주기억 장치)로부터 명령어를 읽어오는 단계 실행(Execution) : 명령어를 실행하는 단계 명령어 처리 주기를 위해 CPU와 메모리가 연결된 구조이다. Controller : 명령어를 해석하며 실행을 위한 시퀀스를 결정한다. Decoder : IR에 저장된 명령어를 해석 IR(insturction register) : 인출된 명령어를 해석하기 위해 임시 저장 PC(program counter) : 인출하는 명령어의 주소를 저장, 명령어 처리 주기마다 다음 명령어의 주소를 가리키도록 값이 자동 증가 MAR(memory address register) : Address bus로 출력되는 주소를 임시 저장 MBR(memor..

명령어 집합은 CPU가 실행할 수 있는 기계 명령어 구조이다. 16bit CPU, 32bit CPU, 64bit CPU라고 할 때 앞의 bit 수는 그 CPU가 실행할 수 있는 기계 명령어 구조를 이루는 bit 수를 나타낸다. 아래 예시는 16bit CPU가 처리하는 16bit 명령어의 구조이다. mode : 주소 지정 방식을 나타내는 값으로 즉시, 직접, 간접 등이 있다. instruct : add, load, and와 같은 연산을 나타낸다. address : 데이터가 위치한 주소를 나타낸다. 아래는 16bit CPU에서 지원하는 명령어 테이블이다. 아래 코드는 C 또는 C++ 같은 언어로 작성한 것이다. 이것이 어떻게 명령어 집합으로 변환되는지 알아보자. int a = 2000; int b = 300..

실수에서 덧셈은 지수를 같게 한 후 계산하면 된다. 예로 23.738001과 -0.038를 덧셈해보자. 실수에서 곱셈은 가수는 곱하고 지수는 더하면 된다. 예로 100.5와 2.5를 곱셈해보자. 실수에서 나눗셈은 가수는 나누고 지수는 빼면 된다. 예로 100.5와 2.5를 나눗셈해보자

10진수 실수 23.738을 부동소수점 구조로 변환해보자. 1.xxxx 형식의 2진수 실수로 변환 한다. 부호부(sign), 지수부(exponent), 가수부(mantissa) 를 구할수 있다. 지수부에서 지수가 음수일 경우, 그것을 표현하기 위해 Bias를 더한다. 위의 결과는 다음과 같이 부동소수점 구조에 들어가게 된다. 위의 부동소수점 값을 역으로 변환해보면 23.738001 이 된다.

컴퓨터에서 실수를 표현할 때, 부동소수점 방식을 사용한다. 아래는 각각 32bit와 64bit 구조이다. 보통 Language에서 32bit는 float로, 64bit는 double로 표현한다. s : 양수는 0, 음수는 1 exponent : 양의 정수로 지수 표현 mantissa : 양의 정수로 가수 표현 아래는 32bit에서 실수 표현범위이다. 음수와 양수 범위 영역 내부에서도 모든 실수를 정확하게 표현 할 수는 없다. 표현할 수 있는 실수 중에서 가장 근사치 값으로 표현한다. 예를 들어 23.738은 표현할 수 없다. 대신 근사치인 23.738001로 표현해야 한다.

아래 절차를 데이터 bit 수 만큼 반복한다. ① : controller는 divisor 값을 가져온다. ② : controller는 remainder 값을 가져온다. divisor 보다 remainder가 크다면 ③으로 간다. 작다면 ⑧로 간다. ③ : controller는 quotient 값에서 LSB를 1로 설정한다. ④ : divisor 값은 뺄셈을 위해 2의 보수기를 통과 후 ALU에 입력된다. ⑤ : remainder 값이 ALU 에 입력된다. ⑥ : controller는 ALU에 Add Opcode 신호를 보낸다. ⑦ : ALU는 뺄셈을 위해 2의 보수기를 통과한 divisor와 remainder로부터 입력된 두 값을 더하고, 그 결과를 remainder에 저장한다. ⑧ : controlle..