명령어 구조 컴퓨터 하드웨어의 구성 프로그램 명령어 프로그램 실행 동작.

Slides:



Advertisements
Similar presentations
개인의견 차가있을수있음 훈훈한남자 배우 TOP 5. 5 위는 박보검 웃을때보이는 치명적인 미소 꺄 ~~~ 5위5위.
Advertisements

1. 자료구조 개념 (1) 자료구조의 개요 1) 자료구조 ① 일련의 자료들을 조직하고 구조화하는 것 ② 자료의 표현과 그것과 관련된 연산 2) 자료구조에 따라 저장공간의 효율성과 프로그램의 실행시간이 달라짐 3) 어떠한 자료구조에서도 필요한 모든 연산들을 처리하는 것이.
Basic of Buffer Over Flow
Internet Computing KUT Youn-Hee Han
3 장 stack and queue.
프로그램 제어 분기(branch)와 점프(jump) 명령어 PC의 값의 변경 순차적인 프로그램의 진행순서가
4장 어셈블리 프로그램 작성의 기본 어셈블러 어셈블리 언어 요소 예제 프로그램 데이터 정의
기본 컴퓨터 프로그래밍 Lecture #6.
Chapter 10 – 추상 자료형 Outline 10.1 소개 10.2 Ada의 추상 자료형 10.3 C++의 추상 자료형
Lecture #7 어셈블리어 (4) 매크로 어셈블리어 시스템프로그래밍.
제 7 장 링커와 로더 설계.
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
자료구조 실습 (03분반)
제 1 장 마이크로프로세서의 기본동작.
Internet Computing KUT Youn-Hee Han
Lecture # 어셈블러 설계.
3장 MPU 내부구조 Slide 1 (of 28).
Internet Computing KUT Youn-Hee Han
스택(stack) SANGJI University Kwangman Ko
7장 마이크로프로세서의 명령어수행과 주소지정 방식 Slide 1 (of 29).
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
강의 #6 큐(Queue).
Chapter 9 – 구조형과 리스트 처리 Outline 9.1 자신 참조 구조형 9.2 선형 연결 리스트 9.3 리스트 연산
수학 I 2. 방정식과 부등식.
Lecture #8 어셈블리어 (5) 매크로 어셈블리어 시스템프로그래밍.
버퍼 오버플로우 시스템보안 인터넷공학전공 권영락.
Chapter 06. 스택(Stack) Chapter 06-1: 스택의 이해와 ADT 정의.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
Chapter 06 명령어와 번지지정 방식.
제 6 장 8086 어셈블러 설계.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
BOF of 2.6 Kernel ! 박수완 / Su-Wan, PARK [ L1nkC] 숭실대학교 정보보호동아리 ACK
제3장 8086 프로세서의 내부구조.
스택(Stack) 김진수
2.3 제한 조건을 가진 자료구조 1. 스택(STACK) 1) 스택의 개념 - 삽입과 제거 작업이 리스트의 한쪽 끝에서만 수행
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
CHAPTER 03. 컴퓨터 구조 컴퓨터 시스템의 구성과 동작 원리_컴퓨터 시스템에 대한 근본적 이해
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
제1장 시스템 소프트웨어의 개요 컴퓨터시스템 및 하드웨어 구성 컴퓨터의 구성과 기능 시스템프로그램의 개요
Buffer Overflow
스케줄링 (Scheduling) 시스템 내부시간(time in the system): 스케줄링 문제
2015. 인문소양교육.
Computer System Architecture
배열과 연결리스트 연결리스트 배열 메모리 할당이 연속적이어서 인덱스 사용시 검색이 빠르다.
Web & Internet [06] CSS3 응용과 레이아웃
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio)
하드웨어 vs 소프트 웨어 볼 수 있다. 만질 수 있다. 볼 수 없다. 만질 수 없다. 키보드, 마우스 ? 하드웨어
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
쇼핑몰기획서 작성자 : 이나경.
스케줄링 (Scheduling) 시스템 내부시간(time in the system): 스케줄링 문제
수학8가 대한 108~110 쪽 Ⅴ. 부등식 2. 일차부등식 §1.일차부등식의 풀이(5/10) 일차부등식의 풀이.
대한민국-스웨덴 수교 60주년 기념 행사 주 스웨덴 대한민국 대사관 (토)
1. 가상 메모리의 개념 프로그램에 의해 빈 프레임은 부재된 페이지를 수용하기 위해 사용. 페이지 대치 과정.
시외버스 안내방송 연결 메뉴얼 DAEWOO BS106 안내방송 배선 연결도[2008년 이후 모델]
2장 선과 글자 모양에 따른 분류 제품 제작을 하기 위한 도면에는 제품의 정보인 형상, 치수,
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
시민이 체감하는 편리한 건축인허가 절차 개선 추진.
자료구조 자료구조의 개요 배열 선형 리스트 스택 큐 트리.
청소년 댄스 경연대회 제35회 문화체육관광부장관大賞 전국레크리에이션대회
볼링 지도 – 학습 과정안.
10장. 컴퓨터 구조에 대한 세 번째 이야기 작성자: 윤성우.
12강 Creo Parametric 3.0 설계 응용 컴퓨터 응용 설계 Tel. :
토론의 기술 3 쟁점분석과 입론.
예수꼴 예배찬양 부모, 친구 초청 추수감사예배 - 11월 19일 -.
제 10 장  코드 생성.
4-1. 명령어 형식.
Presentation transcript:

명령어 구조 컴퓨터 하드웨어의 구성 프로그램 명령어 프로그램 실행 동작

컴퓨터 하드웨어의 전반적인 구성을 살펴본다. 중앙처리장치의 구성과 명령어 처리 단계를 살펴본다. 주기억장치의 역할과 동작 원리를 살펴본다. 컴퓨터 시스템에서 실행하는 프로그램 명령어의 형식과 동작 원리를 살펴본다. 프로그램이 어떻게 실행되는지를 예를 통해 살펴본다.

컴퓨터 하드웨어의 구성 중앙처리장치 주기억장치 입출력장치 프로그램 명령어를 실행하는 기능을 수행 실행 중인 프로그램과 프로그램 실행에 필요한 데이터를 일시적으로 저장 입출력장치 키보드, 모니터, 하드디스크 등으로 중앙처리장치나 주기억장치에 데이터를 입력하거나 출력하는 기능을 수행 [그림 4-1] 컴퓨터 하드웨어의 구성

시스템 버스의 종류 프로그램의 실행 과정 [표 4-1] 시스템 버스의 종류 [그림 4-2] 프로그램의 실행 과정

중앙처리장치 중앙처리장치의 구성 [그림 4-3] 중앙처리장치의 구성 [표 4-2] 중앙처리장치의 구성

레지스터의 종류 중앙처리장치의 명령어 처리 단계 인출 단계는 주기억장치에 저장된 명령어 하나를 읽어 오는 단계 해독 단계는 읽어 온 명령어를 제어 정보로 해독하는 단계 실행 단계는 해독된 명령을 실행하는 단계 [표 4-3] 레지스터 종류 [그림 4-4] 중앙처리장치의 명령어 처리 단계

주기억장치 현재 실행 중에 있는 프로그램과 이 프로그램이 필요로 하는 데이터를 일시적으로 저장하는 장치 주소 할당 : 저장된 정보를 관리하기 편하고 각 위치를 구분하기 위해 바이트 또는 워드 단위로 분할해 주소를 할당 주기억장치가 제공하는 동작 중앙처리장치가 주기억장치에 데이터를 저장하는 ‘쓰기’ 주기억장치에 저장된 데이터를 중앙처리장치로 읽는 ‘읽기’ [그림 4-5] 바이트 단위로 분할한 256바이트 크기의 주기억장치

주기억장치와 연결된 버스 [그림 4-6] 주기억장치와 연결된 버스

제어 버스 장치들을 연결하는 일을 하는데, 주소, 데이터, 제어 버스로 구분 주기억장치 주소 60의 데이터 읽기 주소 버스에 50을, 데이터 버스에 20을 전송한다. 그리고 제어 버스에 쓰기 제어 신호를 보내면 주기억장치 주소 50에 20이 저장된다. 주기억장치 주소 60의 데이터 읽기 주소 버스에 60을 전송하고, 제어 버스에 읽기 제어 신호를 보낸다. 그러면 주기억장치 주소 60에 저장된 30이 데이터 버스를 통해 중앙처리장치로 전송된다. [그림 4-7] 주기억장치 주소 50에 데이터 20 쓰기 [그림 4-8] 주기억장치 주소 60의 데이터 읽기

명령어 기본 형식 연산 코드 피연산자 명령어의 분류 중앙처리장치가 실행해야 할 동작을 나타내는 부분으로, 더하기, 곱하기, AND, OR 등을 의미하는 내용이 위치한다. 피연산자 동작에 필요한 값 또는 저장 공간(레지스터 또는 주기억장치의 주소)을 나타내는데, 피연산자 개수는 중앙처리장치에 따라 차이가 있다. 명령어의 분류 [그림 4-9] 명령어 기본 형식 [표 4-4] 명령어의 분류

주소지정 방식 0-주소 형식(zero-address instruction) 1-주소 형식(one-address instruction) 2-주소 형식(two-address instruction) 3-주소 형식(three-address instruction)

1) 0-주소 형식(zero-address instruction) 연산 명령에서는 번지 필드가 없고 명령어(동작 코드)만 존재 무 번지 명령은 스택 구조의 컴퓨터에서 필요 0-주소 형식은 명령어 수가 가장 많이 소요되는 형식 2) 1-주소 형식(one-address instruction) 연산자와 1개의 주소 부분으로 구성 데이터 처리가 누산기(ACC)에서 이루어지며, 결과는 다시 누산기에 저장

3) 2-주소 형식(two-address instruction) 연산자와 2개의 주소 부분(레지스터나 메모리를 지정)으로 구성 실제로 컴퓨터에서 많이 사용 4) 3-주소 형식(three-address instruction) 연산자와 2개의 주소 필드와 연산 결과를 저장하기 위한 1개의 주소 필드로 구성

중앙처리장치 구조 [그림 4-10] 중앙처리장치의 구조

데이터 전송 명령어 레지스터, 주기억장치, 상수 값 구분 (가정) MOV A B 레지스터 또는 주기억장치에 저장된 값을 레지스터 또는 주기억장치로 전송 상수 값을 레지스터 또는 주기억장치로 전송 스택에 저장된 값을 레지스터로 전송 레지스터에 저장된 값을 스택으로 전송 레지스터, 주기억장치, 상수 값 구분 (가정) AX, BX, CX, DX는 레지스터를 의미한다. 30, 100과 같이 숫자로만 이루어진 값은 상수 값을 의미한다. [10], [50]같이 대괄호([, ])로 감싸고 있는 것은 주기억장치를 의미하는데, [10]은 주기억장치의 주소가 10인 부분을 나타낸다. MOV A B B의 값을 A로 전송한다는 뜻으로, A는 주기억장치의 주소와 레지스터가 올 수 있고, B는 레지스터, 주기억장치의 주소, 상수 값이 올 수 있다.

MOV BX [150] 주기억장치 주소 150에 저장된 값을 읽어와 레지스터 BX에 저장 제어장치가 이 명령어를 해독 주소 버스에 150을, 제어 버스에 읽기 제어 신호를 보냄 주기억장치 주소 150에 저장된 500을 데이터 버스를 통해 읽어옴 레지스터 BX에 500을 저장 [그림 4-11] MOV BX [150]의 동작 과정

스택 PUSH AX : 레지스터 AX에 저장된 값을 스택에 삽입 POP BX : 스택에서 데이터 하나를 삭제해 레지스터 BX에 저장

1) 스택(Stack) ■ 삽입(Push)과 삭제(Pop)가 한쪽 끝에서만 수행 되도록 고안된 자료 구조 ■ LIFO(Last In First Out;후입선출) 스택에 저장된 데이터는 가장 마지막에 입력 된 데이터가 가장 먼저 제거되는 구조

■ 삽입, 삭제 알고리즘 ■ 삽입작업 ▶ TOP의 위치 : TOP+1 ▶ 스택의 크기를 넘어서는 경우 오버플로(Overflow)가 발생 →TOP>m ■ 삭제 작업 ▶ TOP의 위치 : TOP-1 ▶ 데이터의 삭제시 Top 포인터가 Bottom 포인터보다 작아지는 경우 언더플로 (Underflow) 가 발생한다. → TOP=BOTTOM ■ 스택 구조의 이용 : 인터럽트 처리, 부 프로그램 분기, 트리에서의 Postorder 운 행, 0-주소 지정 방식, 순환 프로그램(Recursive Program), 컴파일러 등     ■ 삽입, 삭제 알고리즘   삽입 알고리즘 삭제 알고리즘 TOP=TOP+1 IF TOP>m THEN OVERFLOW ELSE X[TOP]←삽입 IF TOP=0 THEN UNDERFLOW ELSE {제거 ← X[TOP] TOP=TOP-1}

3) 큐(Queue) ■ FIFO(First In First Out;선입선출) : 가장 먼저 입력된 데이터가 가장 먼저 제거되는 구조 ■ 한쪽 끝에서만 삽입이 되고, 다른 한쪽 끝에서 삭제가 수행되는 자료 구조 ■ Rear(=Tail) : 가장 최근에 입력된 데이터를 가리키는 삽입 포인터 ■ Front(=Head) : 가장 먼저 삭제될 데이터를 가리키는 삭제 포인터 예) 질서구조, 지하철 표를 사기 ■ 삽입작업 ▶ REAR의 위치 : REAR=REAR+1 ▶ 오버플로(Overflow) 발생 : REAR>m ■ 삭제 작업 ▶ FRONT의 위치 : FRONT=FRONT+1 ▶ 언더플로(Underflow) 발생 : FRONT=0 삽입 알고리즘 삭제 알고리즘 REAR=REAR+1 IF REAR>m THEN OVERFLOW ELSE X[REAR]←삽입 IF FRONT=0 THEN UNDERFLOW ELSE {제거 ← X[FRONT] FRONT=FRONT+1}

입출력 명령어 키보드, 디스크, 모니터 등의 입출력장치와 데이터를 주고받으려면 각 장치의 입출력을 제어하는 제어기를 통해야 하는 것 외에는 주기억장치의 읽기, 쓰기 동작과 거의 유사 IN AX B : 포트 B에서 데이터를 읽어 레지스터 AX에 저장 OUT B AX : 레지스터 AX의 데이터를 포트 B로 출력 [그림 4-15] 입출력장치의 구성

연산 명령어 산술 연산 명령어 산술 연산 명령어, 논리 연산 명령어, 그리고 시프트 명령어로 구분 [표 4-5] 산술 연산 명령어

ADD AX BX 레지스터 AX와 BX에 저장된 값을 더해서 레지스터 AX에 저장

논리 연산 명령어 [표 4-6] 논리 연산 명령어

AND AX BX 레지스터 AX와 BX에 저장된 값을 AND 연산해서 결과를 AX에 저장

시프트 명령어 SHR=Shift Right CIR=Circular Right SHL=Shift Left [표 4-7] 시프트 명령어 SHR=Shift Right CIR=Circular Right SHL=Shift Left

CIR AX 2 레지스터 AX에 저장된 값을 오른쪽으로 2비트 순환 시프트 [그림 4-18] 2비트 순환 시프트 동작

분기 명령어 프로그램 카운터 레지스터 AX와 BX에 저장된 값을 더해서 레지스터 AX에 저장 JUMP나 CALL과 같은 분기 명령어를 이용하면 바로 아래에 위치한 명령어가 아닌 다른 위치의 명령어로 분기 프로그램 카운터 다음에 실행될 명령어가 저장된 주기억장치 주소를 저장 만약 중앙처리장치가 주기억장치 주소 100에 저장된 명령어인 ADD AX BX를 실행하고 있다면 프로그램 카운터에는 다음에 실행될 명령어가 저장된 주소인 101이 저장 [그림 4-20] 프로그램 카운터에는 101이 저장

현재 중앙처리장치는 주소 101에 저장된 명령어를 실행하는 중이므로 프로그램 카운터 값을 1 증가시켜 102로 변경한다. 현재 명령어에 대한 실행을 마치면 프로그램 카운터에 저장된 주소 값인 101에 저장된 명령어인 MOV [201] AX를 읽어와 명령어 레지스터에 저장한다. 현재 중앙처리장치는 주소 101에 저장된 명령어를 실행하는 중이므로 프로그램 카운터 값을 1 증가시켜 102로 변경한다. 다음에 실행될 명령어가 저장되어 있는 주기억장치 주소는 102이기 때문이다. [그림 4-21] 프로그램 카운터값을 1 증가시킴

JUMP 명령어 JUMP 100 C 언어의 goto 문과 같이 임의의 위치로 분기하는 명령어 주기억장치 주소 100로 분기하는 명령어 [그림 4-22] JUMP 100의 동작 과정

CALL 명령어 프로그램 카운터에 저장되어 있는 주소를 스택에 저장하고, 다른 위치로 분기하는 명령어로 함수를 호출할 때 사용 CALL 100 현재 프로그램 카운터에 저장되어 있는 주소를 스택에 삽입하고, 주소 100로 분기하는 명령어 [그림 4-23] CALL 100의 동작 과정

RETURN의 동작 과정 주소 100 ~ 109까지 명령어들을 실행하고, 주소 110의 RETURN을 실행하게 되는데, RETURN은 함수의 끝을 의미하는 것으로, 함수 호출 명령인 CALL 100 다음 주소의 명령어가 실행되도록 한다. 그러므로 RETURN을 실행하면 스텍 포인터 값을 1 감소시킨 주소 20에 저장된 51을 꺼내서 프로그램 카운터에 저장한다. [그림 4-24] RETURN의 동작 과정

주기억장치로부터 두 개의 값을 읽어 와 레지스터에 저장하고, 이 값들을 더한 결과를 주기억장치에 저장하는 프로그램 실행 동작을 살펴보자. 연상 기호 코드 형식

분기 명령어 시작 상태 [그림 4-25] 시작 상태

연상 기호 코드 형식 ① 주소 버스에 프로그램 카운터에 저장된 1을 보내고, 제어 버스에 읽기 제어 신호를 보내 주기억장치 주소 1의 MOV AX [11]을 읽어와 명령어 레지스터에 저장 ② 프로그램 카운터 값을 1 증가시켜 2가 된다. 다음에 실행될 명령어가 저장되어 있는 주기억장치의 주소는 2이기 때문이다. ③ 제어장치는 명령어 레지스터의 내용을 해독하여 주기억장치 주소 11로 부터 데이터를 읽어 올 필요성을 느낀다. ④ 주소 버스에 11을, 제어 버스에 읽기 제어 신호를 보내 주기억장치 주소 11에 저장된 50을 읽어와 레지스터 AX에 저장한다. [그림 4-26] 동작 ①~④

⑤ 다음 명령어를 실행하기 위해 프로그램 카운터에 저장된 2를 주소 버스를 통해 보내고, 읽기 제어 신호를 보내 주소 2에 저장된 MOV BX [12]를 읽어와 명령어 레지스터에 저장한다 ⑥ ②~④와 유사한 동작을 거쳐 프로그램 카운터는 3이 되고 레지스터 BX에는 30이 저장된다. 주소 2 명령어에 대한 실행이 끝났다. [그림 4-27] 동작 ⑤~⑥

⑦ 다음 명령어인 주기억장치 주소 3에 저장된 ADD AX BX를 읽어와 명령어 레지스터에 저장한다 ⑧ 제어장치는 명령어 레지스터에 저장된 명령어를 해독하여 레지스터 AX의 50과 레지스터 BX의 30을 연산장치로 전송하여 제어장치의 지시에 의해 연산장치는 이 두 값을 더해 결과인 80을 레지스터 AX에 저장한다. 주소 3 명령어에 대한 실행이 끝났다. [그림 4-28] 동작 ⑦~⑧

⑨ 주소 4에 저장된 MOV [13] AX를 읽어와 명령어 레지스터에 저장하고, 프로그램 카운터 값을 1 증가시켜 5가 된다. ⑪ 다음 명령어인 주소 5에 저장된 HALT를 읽어와 명령어 레지스터에 저장하고, 프로그램 카운터 값을 1 증가시켜 6이 된다. ⑫ 제어장치가 명령어를 해독하여 프로그램 실행을 종료한다. [그림 4-29] 동작 ⑨~⑩

2진 표기법 형식 2진 표기법 형식의 명령어를 살펴보기 위해 다음과 같이 가정한다. 주기억장치는 바이트 단위로 분할하며 0부터 15까지 16개의 주소를 갖는다. 범용 레지스터는 4개로 각 번호는 00, 01, 10, 11이다. 명령어의 길이는 8비트로 처음 2비트는 명령코드고, 다음 2비트는 피연산자1 부분, 나머지 4비트는 피연산자2 부분이다. [그림 4-30] 8비트 크기의 데이터 버스

명령어

명령어 1행은 주기억장치 주소 11의 내용을 레지스터 0 로 읽어오는 명령어 2행은 주기억장치 주소 12의 내용을 레지스터 1로 읽어오는 명령어 3행은 레지스터 0과 1에 저장된 값을 더한 결과를 레지스터 0에 저장하는 명령어 4행은 레지스터 0의 내용을 주기억장치 주소 13에 저장하는 명령어 5행은 프로그램을 종료하는 명령어 00 = 주 기억 →레지스터 01= 레지스터 → 주 기억 10= 레지스터 연산 후 저장 11 = 프로그램 종료

시작 상태 [그림 4-31] 시작 상태

주소 버스에 프로그램 카운터에 저장된 0001을 보내고 읽기 제어 신호를 보내면 주소 1에 저장된 내용이 데이터버스를 통해 전송되어 명령어 레지스터에 저장됨 프로그램 카운터가 1 증가하여 2가 된다. 제어장치가 명령어 레지스터에 저장된 명령어를 해독하여 주기억장치 주소 11의 내용을 읽어와 범용 레지스터 00에 저장한다. 그러면 주소 1 명령어에 대한 실행이 끝난다. [그림 4-32] 주소 1 명령어에 대한 동작

명령어와 데이터가 16비트인 경우의 구조 [그림 4-3] 주소 1 명령어에 대한 동작