1 / 39

4 장 CPU 의 내부 구조와 명령어 집합

4 장 CPU 의 내부 구조와 명령어 집합. 레지스터. CPU 의 내부 구조와 외부 연결. 전원선. 제어 장치. 명령어 집합. 주소선. 명령어. 내부 연결 구조. 자료선. 자료. ALU. 제어선. CPU. Processor - CPU - 입출력 프로세서. 메모리. 4.1 CPU 내부의 저장 장치. 1) 레지스터 ◈ 특수 레지스터 특정 기능 수행 또는 특정 상태 저장. ◈ 범용 레지스터 일반적인 정보 저장 : 여러 레지스터, 누산기 ( AC,Accumulator).

misae
Download Presentation

4 장 CPU 의 내부 구조와 명령어 집합

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4장 CPU의 내부 구조와 명령어 집합 4장 CPU내부 구조와 명령어 집합

  2. 레지스터 CPU의 내부 구조와 외부 연결 전원선 제어 장치 명령어 집합 주소선 명령어 내부 연결 구조 자료선 자료 ALU 제어선 CPU • Processor • - CPU • - 입출력 프로세서 메모리 4장 CPU내부 구조와 명령어 집합

  3. 4.1 CPU 내부의 저장 장치 • 1) 레지스터 ◈ 특수 레지스터 특정 기능 수행 또는 특정 상태 저장 • ◈ 범용 레지스터 • 일반적인 정보 저장 : 여러 레지스터, 누산기(AC,Accumulator) 4장 CPU내부 구조와 명령어 집합

  4. 4.1 CPU 내부의 저장 장치 • 2) 스택 저장 장치 • (1) 스택구조 • ◑ 자료 접근( LIFO- Last In First Out ) • 저장 순서에 따라 참조 정보가 정해지는 순차적 접근 • ◑스택의 위치 • CPU내부의 RAM 또는 레지스터 집합 • (2) 스택의 구현 • ◑ 스택포인터(SP; Stack Pointer) • 스택의top 위치를지시 • 특수레지스터를이용자동으로처리 • ◑스택내자료접근: 스택포인터(주소)를통해접근 n-1 스택의 저장 순서 B B A A 0 초기화 ‘A’,’B’ 푸쉬 후 팝 후 4장 CPU내부 구조와 명령어 집합

  5. 4.1 CPU 내부의 저장 장치 • (3) 스택의 동작 • ◑푸쉬(push) 동작 : 스택으로 자료 입력 • SP <- SP + 1 • 만약 SP=0이면, 스택은 찬 상태이므로 중지/복귀 • SP가 지정하는 주소에 정보 쓰기 • ◑ 팝(pop) 동작 : 스택으로 부터 자료 획득 • 만약 SP=0이면, 스택은 빈 상태이므로 중지/복귀 • SP가 지정하는 주소에서 정보 읽기 • SP <- SP – 1 • ◈ 스택을 이용한 덧셈 실행 과정 4장 CPU내부 구조와 명령어 집합

  6. 4.2 레지스터와 CPU내부의 연결 1) CPU 내의 여러 장치들의 상호 연결 방식 ◑ 직접 연결 :연결 복잡도가 장치수의 제곱에 비례 ◑ 버스 연결 : 공용 선들의 집합 : 보편적인 장치들간의 연결 : 한 순간에는 하나의 정보만 전송 가능 4장 CPU내부 구조와 명령어 집합

  7. 4.2 레지스터와 CPU내부의 연결 2)레지스터의출력들을버스로연결하는방법 ◑멀티플렉서 ◑ 3-상태게이트 ◑ 오픈 콜렉터 4장 CPU내부 구조와 명령어 집합

  8. 4.2 레지스터와 CPU내부의 연결 3) 버스로부터레지스터로자료입력연결 ◑ 버스 상의 정보를 레지스터에 전송 ◑디코더를 이용하여 특정 레지스터 선택 4장 CPU내부 구조와 명령어 집합

  9. 4.2 레지스터와 CPU내부의 연결 4개의 레지스터를 공유 버스에 연결하는 연결도 ◑ 레지스터들의 출력은 4*1 MUX 이용 ◑ 레지스터로의 입력은 2*4 디코더 사용하여 연결 4장 CPU내부 구조와 명령어 집합

  10. 4.3 ALU(Arithmetic and Logic Unit)의 설계 • ALU 기능 • 이항 연산을 기준으로 산술, 논리 연산 수행 • 2) ALU의 동작 • ①오퍼랜드를 ALU 입력으로 연결 • ②ALU에서 행할 연산 내용 선택후 실행 • ③ 연산의 결과 저장 • 3) ALU의 내부 구성 및 외부 연결 4장 CPU내부 구조와 명령어 집합

  11. 4.3 ALU(Arithmetic and Logic Unit)의 설계 다음과 같은 산술/논리/쉬프트를 실행하는 ALU를 설계하라. 각 연산은 4비트(부호비트 포함)의 자료에 대해 적용된다. • ALU 설계 (4 비트 자료에 대해 적용) • ◑산술 연산 : 덧셈, 뺄셈 • ◑논리 연산 : AND, OR, XOR, 보수 • ◑쉬프트 : 우측 쉬프트, 좌측 쉬프트 ★ALU 내부 구성 연결 및 외부연결 4장 CPU내부 구조와 명령어 집합

  12. 4.3 ALU(Arithmetic and Logic Unit)의 설계 ★ALU 연산들과 멀티플레서 연결 4장 CPU내부 구조와 명령어 집합

  13. 4.3 ALU(Arithmetic and Logic Unit)의 설계 ★ALU 내부 회로 4장 CPU내부 구조와 명령어 집합

  14. 4.3 ALU(Arithmetic and Logic Unit)의 설계 ★ALU 내부 회로 4장 CPU내부 구조와 명령어 집합

  15. 4.4 명령어 집합 • 다음 순서의 실행 명령어 주소에 따른 구분 • 순차적 실행 명령어, 분기 명령어, 서부루틴 호출, 복귀 명령어 • ★순차 명령어가 전체 실행 명령어의 대부분을 차지(70~80%) • 2) 명령어 형식 명령 코드 : CPU가 실제 실행할 수있는 연산 오퍼랜드 : 명령어가 처리할 자료값 또는 그 자료가 저장된 주소에 관한 정보 주소지정모드(addressing mode) : 오퍼랜드가 저장되어있는 장소를 지정하는 방법 4장 CPU내부 구조와 명령어 집합

  16. 4.4 명령어 집합 3) 명령어집합의설계 ◑프로그래의 관점 ◑명령어가실행되는CPU 내의내부구조설계의관점 많은 종류의 명령 코드를 갖도록 명령어를 설계한다면 프로그래밍과 CPU의 내부에 어떤 영향을 주는가? ★ 장점 프로그램 용이 전체 프로그램길이 감소 번역기의 설계 용이 ★ 단점 명령어의 크기 증가 QLU, 제어장치가 복잡해짐 4장 CPU내부 구조와 명령어 집합

  17. 4.4 명령어 집합 펜티엄 프로세서와 같이 명령 코드가 1바이트 또는 2바이트이고 첫 바이트에서 2개의 코드가 2바이트 확장을 위해 예약된다면, 최대 몇 개까지의 명령 코드를 지정할 수 있는가? 1바이트로 표현 가능한 명령 코드의 수는 256가지이지만, 이 중에서 2개가 2바이트로의 확장을 위해 예약되므로 이를 빼면, 1 바이트로 지정할 수 있는 명령 코드의 수는 256­2=254이다. 2 바이트로 지정 가능한 경우는 첫 바이트는 2개 값 중의 하나이고 두 번째 바이트는 256 가지의 코드 값을 가질 수 있으므로, 2 바이트로 지정할 수 있는 명령 코드 수는 2256=512 이다. 따라서, 합계 254+512=766개의 명령 코드를 지정할 수 있다. 4장 CPU내부 구조와 명령어 집합

  18. 4.5 실행 내용에 따른 명령어 구분 • 산술 및 논리 명령어 • ◑산술 연산 명령어 • 예)덧셈(ADD), 뺄셈(SUB), 곱셈(MUL), 나눗셈(DIV)등 • ◑논리 연산 명령어 • 예) AND, OR, XOR, Clear, 보수(COM) 등 • ◑쉬프트 명령어 • 논리 쉬프트, 산술 쉬프트, 회전 쉬프트 4장 CPU내부 구조와 명령어 집합

  19. 4.5 실행 내용에 따른 명령어 구분 • 산술 및 논리 명령어 부호 및 2의 보수로 표현된 수 11111000을 좌측 및 우측으로 한 비트 씩 산술 쉬프트 하여라. 4장 CPU내부 구조와 명령어 집합

  20. 4.5 실행 내용에 따른 명령어 구분 2) 자료 전송 명령어 ◑ 메모리로부터 레지스터 (또는 메모리)로 전송 예) 적재 명령어(LD, Load), MOVE ◑ 레지스터로부터 메모리 (또는 레지스터)로 전송 예) 저장 명령어(ST, Store), MOVE ◑ 입출력 명령어 예) In, Out 3) 실행 제어 명령어 ◑ 조건부 분기 명령어 예) JNE, JP ◑ 무조건부 분기 명령어 예) JMP ◑호출 명령어 예) CALL ◑반환 명령어 예) RET, RETURN ★ 분기 명령어가 전체 실행 명령어의 20%이상이고, 그 중 조건부 분기 명령어가 80%이상으로 알려져 있다. 4장 CPU내부 구조와 명령어 집합

  21. 4.5 실행 내용에 따른 명령어 구분 • 3) 실행 제어 명령어 • (1)분기 명령어의 조건코드: 상태 비트 • ◎C(Carry)비트 : 연산 결과의 출력 캐리 값 • ◎ S(Sign)비트 : 연산 결과의 MSB • ◎ Z(Zero)비트 : 연산 결과값 = 0 • ◎ V(Overflow)비트 : 연산 결과의 오버플로우 (2) 조건 코드의 생성 4장 CPU내부 구조와 명령어 집합

  22. 4.5 실행 내용에 따른 명령어 구분 다음 연산을 수행한 이후의 상태 비트들을 표시하라. 13-7 C =1 S = 0 Z = 0 V = 0 4장 CPU내부 구조와 명령어 집합

  23. 4.5 실행 내용에 따른 명령어 구분 실제 PC에서의 측정에 의한 다음 표를 분석하여 수행 내용에 따른 명령어의 유형별 비율을 구하라. ◑ 자료 전송 명령어 : 38% Load, store, move ◑산술/논리 연산 명령어 : 35% Compare, add, and, sub ◑실행 제어 명령어 : 22% 조건부 분기, call, return ◑ 10개의 명령어가 전체 실행 명령어의 95% 4장 CPU내부 구조와 명령어 집합

  24. 4.6. 주소 지정 모드 (addressing mode) • 정의 :자료가 저장되어 있는 장소를 지정하는 방법 • 장점 : 프로그램의 유연성(포인터, 인덱싱 등의 여러 기법) • 명령어의 수와 명령어의 길이를 감소 • 묵시적 모드 • 오퍼랜드가 명령어에 포함되지 않는 모드 • 2) 직접값 모드 • 오퍼랜드 자체가 명령어에 직접 포함된 모드 • 예) MOV R1, #100 ; 십진수 값 100이 두번째 오퍼랜드 • 3)레지스터 모드(Register mode) • 오퍼랜드가 레지스터에 저장된 모드 • 예) ADD R1, R2 ; 레지스터 R1과 R2의 값이 두 오퍼랜드 4장 CPU내부 구조와 명령어 집합

  25. 4.6. 주소 지정 모드 (addressing mode) • 4)메모리 직접 주소 모드 ( Direct mode ) • 오퍼랜드가 저장된 메모리 주소를 나타내는 모드 • 예) MOV R1, 100 ; 두 번째 오퍼랜드는 메모리 100번지에 저장, 유효 주소는 100 번지 • 5)메모리 간접 주소 모드 ( Memory indirect addressing ) • 메모리를 이용하여 간접적으로 주소 지정하는 모드 • 예) MOV R1, @100; 두 번째 오퍼랜드의 유효 주소가 • M[100]에 저장 4장 CPU내부 구조와 명령어 집합

  26. 4.6. 주소 지정 모드 (addressing mode) • 6)레지스터 간접모드와 변형모드 • 오퍼랜드가 저장된 메모리주소(유효주소)가 레지스터에 저장 • ① 자동 증가/자동 감소 모드 • ② 레지스터 간접 모드 ( Register indirect mode ) • 예) MOV R1, (R2) ; 두 번째 오퍼랜드의 유효주소는 R2에 저장 • ③ 변위 주소 지정 모드 (displacement addressing mode) • 예) ADD R4, 100(R1) ; 두 번째 오퍼랜드의 유효 주소는 (R1)+100 • ④ 상대 주소 모드 (relative addressing mode) • 유효 주소 = (PC) + 명령어의 주소부분 4장 CPU내부 구조와 명령어 집합

  27. 4.6. 주소 지정 모드 (addressing mode) 각 명령어를 수행한 후의 R1값, 두 번째 오퍼랜드의 유효 주소를 구하라. 레지스터 값 R1 = 10 R2 = 20 (1) MOV R1, #15 직접값 모드, R1=50 (2) MOV R1, R2 레지스터 모드, R1=20 (3) MOV R1, M[100] 직접 모드, R1=200, 유효주소=100 (4) MOV R1, @100 메모리 간접 모드, R1=300, 유효주소=200 4장 CPU내부 구조와 명령어 집합

  28. 4.6. 주소 지정 모드 (addressing mode) 각 명령어를 수행한 후의 R1값, 두 번째 오퍼랜드의 유효 주소를 구하라. 레지스터 값 R1 = 10 R2 = 20 (5) MOV R1, --(R2) 단조 감소 모드, R1=60, 유효주소=19(R1의 값은 19로 수정) (6) MOV R1, (R2)++ 단조 증가 모드, R1=70, 유효주소=20(R2의 값은 21로 수정) (7) MOV R1, 50(R2) 변위 주소 모드, R1=100, 유효주소=70 4장 CPU내부 구조와 명령어 집합

  29. 4.6. 주소 지정 모드 (addressing mode) 다음 명령어의 실행에 필요한 메모리 참조 횟수를 구하라. 각 오퍼랜드는 메모리 간접 주소 모드로 지정된다.. • ADD @100, @200 ★ 4장 CPU내부 구조와 명령어 집합

  30. 4.7 명령어 형식 • 오퍼랜드를 명령어에 표현하는 방법에 따른 형식 • 1) 3 주소 명령어 • ADD C, A ,B ; M[A]+M[B] => M[C] • ADD R3, R1, R2 • 2) 2 주소 명령어 • ADD A, B ; M[A]+M[B] => M[A] • ADD R1, R2 • 3) 1 주소 명령어 • ADD B ; AC+M[B] =>AC • 4) 0 주소 명령어 • ADD ; M[SP--] + M[SP--] => M[++SP] 4장 CPU내부 구조와 명령어 집합

  31. 4.7 명령어 형식 M[A] + M[B] -> M[C]를 구현하고, 명령어의 길이와 프로그램 길이를 비교하라. 단, 명령어 코드와 메모리 주소 부분은 8비트, 레지스터 부분은 4비트라 가정하고 주소 A, B의 내용은 변경하지 마시오. 4장 CPU내부 구조와 명령어 집합

  32. 4.7 명령어 형식 4장 CPU내부 구조와 명령어 집합

  33. 4.8 스택의 활용 1)서브루틴 호출의 처리 (1)서브루틴호출에따른명령어실행순서 (2) 서브루틴호출시복귀주소를저장하는다음세가지방법 ◎메모리의특정위치에복귀주소를저장하는경우 ◎각서브루틴의첫번째주소에복귀주소를저장하는경우 ◎스텍에복귀주소를저장하는경우 B 호출시 저장 내용 A 호출시 저장 내용 4장 CPU내부 구조와 명령어 집합

  34. 4.8 스택의 활용 4장 CPU내부 구조와 명령어 집합

  35. 4.8 스택의 활용 4장 CPU내부 구조와 명령어 집합

  36. 예제 4.8 스택의 활용 • 2)연산식의 표현과 계산 • 연산식 : 계산이 수행되어 결과값을 갖는 모든 표현 • (1)중위 표기 (infix notation) • 예) a + b • (2)전위 표기 (prefix notation), polish 표기 • 예) + (a, b) • (3)후위 표기(Postfix notation) • 예) ( a b+) ◎후위 표기된 연산식의 구성 성분을 왼쪽에서 오른쪽으로 하나씩 취한다. a) 만약 상수(혹은 변수의 값)이면 스택에 넣는다 (push). b) 연산자이면, 필요한 자료를 스택에서 꺼내어 (pop), 연산 결과를 스택에 넣는다(push). ◎최종적으로 스택에 저장된 값이 연산식의 결과값 7 7* 4 2 * 3 * - 의 연산 과정 4장 CPU내부 구조와 명령어 집합

  37. 4.8 스택의 활용 • 후위 표기(Postfix notation)된 연산식의 스택을 이용한 계산 7 7* 4 2 * 3 * - 의 연산 과정 ◎후위 표기된 연산식의 구성 성분을 왼쪽에서 오른쪽으로 하나씩 취한다. a) 만약 상수(혹은 변수의 값)이면 스택에 넣는다 (push). b) 연산자이면, 필요한 자료를 스택에서 꺼내어 (pop), 연산 결과를 스택에 넣는다(push). 4장 CPU내부 구조와 명령어 집합

  38. 4.8 스택의 활용 • 후위 표기(Postfix notation)된 연산식의 스택을 이용한 계산 7 7* 4 2 * 3 * - 의 연산 과정 ◎ 최종적으로 스택에 저장된 값이 연산식의 결과값 4장 CPU내부 구조와 명령어 집합

  39. 4.9. CISC 와 RISC • CISC 과 RISC의 특성 ◑ CISC 다양한 명령 코드 포함 명령어의 길이가 다양 다양한 주소 지정 모드 명령어 실행 시간이 가변적 마이크로 프로그램에 의한 제어 CPU내부 구조가 전체적으로 복잡 ◑ RICS 한정된 명령 코드 특정 명령어만 메모리 참조를 허용 균일한 명령어들의 실행 시간 명령어당 실행 시간 감소 짧은 클록 주기 2) 각프로세서의성능전략 작업처리시간 = 실행 명령어수 * 명령어당 실행 클록수 * 클록 주기 ◑ CISC 프로세서 : 명령어당 실행 클록수와 클록 주기는 증가 실행 명령어수를 감소 ◑ RISC 프로세서 실행 명령어수는 증가 명령어당 실행 클록수와 클록 주기를 감소 4장 CPU내부 구조와 명령어 집합

More Related