컴퓨터구조(1반 조원

Report
컴퓨터 구조 발표
2007081048 조원기
2009081003 김정호
CPU (Central Processing Unit)
CPU의 기능
-명령어 인출(Instruction Fetch)
기억장치로 부터 명령어를 읽어온다.
-명령어 해독(Instruction Decode)
읽어온 명령어를 해독한다.
-데이터 인출(Data Fetch)
명령어 실행시 데이터가 필요한 경우 기억장
치/입출력 장치로부터 데이터를 읽어온다.
-데이터 처리(Data Process)
읽어온 데이터에 대한 산술, 논리적 연산을
수행
-데이터 쓰기(Data Store)
수행 한 결과값을 저장한다.
CPU 구성요소
CPU 구성요소 종류
1. 산술 논리 연산 장치(ALU : Arithmetic Logic Unit)
1-1
1-2
1-3
1-4
상태 플래그 : ALU 내의 상태 표시
이동기 : 데이터의 좌, 우 이동
보수기 : 보수 연산
산술 및 부울로직 : 산술 연산과 논리 연산
2. 제어 장치(CU : Control Unit)
연산을 순서대로 실행하기 위해 기억, 연산, 입출력 장치에 제어신호를 발생시켜 제어
3. 레지스터 세트
CPU내부 레지스터의 집합으로 기억기능을 수행하며 기억 장치 중 엑세스속도가 가장 빠르다.
4. 내부 버스
5.
6.
7.
8.
9.
CPU 내부에서 ALU와 레지스터간의 데이터 이동을 위한 통로
프로그램 카운터(PC : Program Counter)
누산기 (AC : Accumulator)
명령어 레지스터 (IR : Instruction Register)
기억장치 주소 레지스터 (MAR : Memory Address Register)
기억장치 버퍼 레지스터 (MBR : Memory Buffer Register)
명령이 실행 과정
명령어 사이클(Instruction Cycle)
인출 사이클(Fetch Cycle)
CPU가 기억장치로부터 명령어를 읽어오는 단계
실행 사이클(Execution Cycle)
CPU는 명령어 코드를 해독하고 그 결과에 따라 연산을 수행한다.
-CPU가 수행하는 연산의 종류
-데이터 이동 : CPU와 기억장치, 입출력 장치간 데이터를 이동
-데이터 처리 : 데이터에 대한 산술, 논리 연산 수행
-데이터 저장 : 연산에 필요한 데이터 및 연산 결과를 기억 장치에 저장
-제어 : 프로그램, 명령어의 실행 순서 결정
* 실행 사이클에서 수행되는 마이크로 연산은 명령어에 따라 다르다.
명령어 집합
-기계어를 사람이 이해하기 쉽게 표현한 것을 명령어라 하며 이 명령어의 집합
을 명령어 집합이라 한다.
- 모든 컴퓨터는 자신의 명령어 집합을 가지고 있다.
* 명령어 집합 설계를 위해 결정해야할 사항
-연산 종류 : CPU가 수행할 연산의 수와 종류 및 복잡도
-데이터 형태 : 연산을 수행할 데이터의 형태, 길이 등
-명령어 형식 : 명령어의 길이, 오퍼랜드 필드의 수와 길이 등
- 주소 지정 방식 : 오퍼랜드의 주소를 지정하는 방식
명령어 형식
-각 명령어는 일련의 비트로 구성된 코드로 표현하며, 그 명령어는
그 구성 요소에 따라 몇 부분으로 구성 할 수 있다.
- 컴퓨터의 내부 구조에 따라 여러 가지 형식이 있다.
동작 코드
오퍼랜드 1
- 명령어 형식 -
오퍼랜드 2
명령어의 구성요소
1. 동작 코드(OP Code :Operation Code) : 실행할 명령어를 나
타내는 부분, 동작 코드가 n비트이면 실행 가능한 연산의 개
수는 2ⁿ개 이다.
1.1 동작 코드의 종류
-데이터 전송(Data Transfer)코드
-산술(Arithmetic)코드
-논리(Logic) 코드
-제어 전송 코드
-입출력 코드 등
오퍼랜드(Operand)
-연산을 수행하는데 필요한 데이터 혹은 데이터의 주소, 한 개 또는 두 개
의 입력 오퍼랜드와 한 개의 결과 오퍼랜드를 가질 수 있다. 또한 데이터
가 저장되어있는 장소를 지정하는 방법을 주소 지정 모드라 한다.
*오퍼랜드의 범위는 오퍼랜드의 종류에 따라 결정
- 데이터 : 표현 가능한 수의 크기
- 기억장치 주소 : 주소를 지정할 수 있는 기억장치 영역의 범위 결정
- 레지스터 번호 : 사용할 수 있는 레지스터의 수가 결정
오퍼랜드 수에 따른
명령어 형식 분류(1)
1) 0-주소 명령어 형식
-스택 구조에서 사용하는 형식
2) 1-주소 명령어 형식
-오퍼랜드의 수가 1개인 형식
-수식을 postfix 형태로 바꾸어 사용한 - 기억장치로부터 오퍼랜드를 가져오거나 연
다.
산 결과를 저장하는 장소로 누산기
(Accumulator )를 사용.
-주소 필드를 사용하지 않는다.
예) F = (A + B) * C를 1-주소 명령어 형식으
예) F = (A+B) * C을 0-주소 명령어 형 로 프로그램 하라.
식으로 프로그램 하라.
LD A - AC <- A
ADD B - AC <- AC + B
postfix formula F = 3 4 + 5 6 + *
MUL C - AC <- AC * C
ST F - F <- AC
프로그램 : PUSH A -> PUSH B ->
ADD -> PUSH C -> MUL -> POP F
동작 코드
오퍼랜드(#1)
1-주소 명령어 형식
오퍼랜드 수에 따른
명령어 형식 분류(2)
3) 2-주소 명령어 형식
- 오퍼랜드의 수가 2개인 형식
4) 3-주소 명령어 형식
- 오퍼랜드의 수가 3개인 형식
- 결과 값을 두 오퍼랜드 중 하나에 기억
시키는데 이 때문에 결과 값을 저장하는
오퍼랜드의 내용이 변질 된다.
- 결과 값을 저장할 오퍼랜드를 따
로 지정해 줄 수 있어 다른 오퍼랜
드의 내용이 보존된다.
- 효율과 편의를 위해 다른 명령어
형식들의 이용이 필요하다.
예) F = (A + B) * C를 3-주소 명령
어 형식으로 프로그램 하라.
ADD T1, A, B - T1 <- A+B
MUL F, Z, C - F <- T1*C
예) F = (A + B) * C를 2-주소 명령어 형
식으로 프로그램 하라.
ADD A, B - A <- A+B
MUL C, A - C <- A*C
MOV F, C - F <- C
동작
오퍼랜
오퍼랜
동작
오퍼랜 오퍼랜 오퍼랜
코드
드(#1)
드(#2)
코드
드(#1) 드(#2) 드(#3)
2-주소 명령어 형식
3-주소 명령어 형식
명령어의 종류(1)
명령어의 종류(2)
*Mnemonic은 기계어나 기계의 동작을 사람이 알아보기 쉬운 형태로 표현한 것을 말합니다.
명령어 주소 지정 방식(1)
-프로그램 수행 시 오퍼랜드를 지정하는 방식
- 명령어의 주고 필드를 변경하거나 해석하는 규칙을 지정하는 형식
동작 코드
주소 지정 방식
주소 or 오퍼랜드
1) 즉시 주소지정 방식
-명령어 자체 내에 오퍼랜드를 지정하고 있는 방식
-오퍼랜드 필드 내용이 실제 사용 데이터
-레지스터나 변수의 초기화에 유용
예) ADD R1,100 : R1 <- R1 + 100
명령어 주소 지정 방식 (2)
2) 직접 주소지정 방식
3) 간접 주소지정 방식
-명령어의 주소필드에 직접 오퍼랜드 -명령어의 주소필드에 오퍼랜드의 주소를
의 기억장치 주소를 저장시키는 방식 갖고 있는 기억장치의 주소를 저장시키는
방식
예) ADD ADRS(n) : AC <- AC +
M[ADRS(n)]
예) ADD ADRS(n) : AC <- AC +
M[ADRS(m)]
명령어 주소 지정 방식 (3)
4) 레지스터 주소지정 방식
5) 레지스터 간접 주소지정 방식
-주소 필드에 오퍼랜드 내용을 갖고 있는 레
지스터의 주소를 저장시키는 방식
-레지스터가 오퍼랜드의 주소를
갖고 있는 기억장치의 주소를 갖
고 있는 방식
예) ADD R1 : AC <- AC + R1
예) ADD (R1) : AC <- AC +
M[R1]
명령어 주소 지정 방식 (4)
6) 상대 주소 방식
7) 베이스 레지스터 주소지정 방식
-유효주소를 계산하기 위해 처리 장치 -베이스 레지스터라는 레지스터를 이용하여
내의 특정 레지스터 내용에 주소필드 그 값을 기준으로 변위를 설정하여 주소를 얻
는 방식이다.
값을 더하는 방식
-특정 레지스터는 주로 PC(Program
Counter)를 사용
예) ADD x : AC <- AC + M[x + PC]
예) ADD (BR) : AC <- AC + M[m +(BR)]
명령어 주소 지정 방식 (5)
8) 인덱스 레지스터 주소지정 방식
-인덱스 레지스터의 내용을 명령어 주
소 부분에 더해 유효주소를 얻는 방식
-배열 또는 데이터를 표나 사전처럼 구
성한 구조인 프로그램 처리시 유용하다.
예) ADD (Ix + d) : AC <- AC + (n + d)
9) 데이터 주소의 표현 방식
-데이터 주소의 표현 방식에는 완전 주소,
약식 주소, 생략 주소, 데이터 자신으로 구
분할 수 있다.
1. 완전 주소는 정보가 데이터나 주소를
구별하지 않고 기억된 장소에 직접 매
핑 시킬 수 있는 완전한 주소를 뜻한다.
2. 약식 주소는 주소의 일부분을 생략한 것
을 말하며 계산에 의한 주소는 약식 주소에
속한다.
3. 생략 주소는 주소를 구체적으로 나타내
지 않아도 정보가 기억된 곳을 알 수 있을
경
← 데이터 주소의 표현방식
명령어 주소 지정 방식 (6)
10) 스택 주소지정 방식
10-1) 스택의 단항, 이항 연산
-주소를 명시할 필요 없이 기억장치
에 기억할 수 있는 방식
-단항 연산은 하나의 데이터만 필요함
으로 TOP이 지정하는 곳에서 데이터를
얻어 처리한 후 결과는 얻은 곳에 다시
보관 한다.
- 0-주소 또는 내포(implied) 명령어
라고 한다.
- 이항 연산은 두 개의 데이터가 필요
하다. 이 데이터는 스택의 상단부에 위
치한 두 자리에서 얻는다. 결과는 탑이
지정하는 장소 하단에 저장된다.
레지스터
- 범용레지스터
1) 누산기(Accumulator)
-전용레지스터
1)명령어 레지스터
2)메모리 지정 레지스터
1.
2.
3.
4.
5.
6.
메모리 주소 레지스터(MAR : Memory Address Register)
인덱스 레지스터(index register)
세그먼트 레지스터(Segment Register)
메모리 버퍼 레지스터(MBR : Memory Buffer Register)
SI(Source Index), DI(Destination Index) 레지스터
프로그램 카운터(PC : Program Counter)
3) 스택 레지스터
4) 상태 레지스터
범용 레지스터
-
작업 레지스터(Working Register) 또는 스크래치 패드 레지스터(Scratch
Pad Register)라고도 한다.
-
CPU가 작업을 위해 다목적으로 사용하는 고속 레지스터로 대부분 ALU와
연결하여 사용한다.
1) 누산기(Accumulator)
- 증가(Increment), 감소(Decrement), 이동(Shift), 데이터 변환 등의 기능이 집약되어 있다.
- 연산의 편의성을 위해 자주 사용되며, 간단한 연산의 경우 누산기에서 처리할 경우 ALU보다
빠르고 높은 효율로 처리가 가능하다.
전용 레지스터(1)
-
특수 레지스터(SPR : Special Purpose Register)라고도 한다.
범용 레지스터에 비해 특별한 용도에 사용하는데 대부분 필요한 용도로서
장착하고 있어야 한다.
1) 명령어 레지스터(IR : Instruction Register)
- 명령어를 수행하기 위해 잠시 명령어 정보를 저장하는 레지스터
2) 메모리 지정 레지스터
① 메모리 주소 레지스터(MAR : Memory Address Register) : CPU가 참조해야할 기억장
치의 주소를 나타내는 레지스터
② 인덱스 레지스터(Index Register) : 레지스터 내의 내용을 입력 받은 피연산자값을 더
하여 주소 지정 모드를 만들어 기억장치의 주소를 참조할 수 있도록 하는 레지스터
③ 세그먼트 레지스터(Segment Register) : CPU가 읽어야할 코드나 데이터가 있는 세그
먼트의 기억장치 내의 주소를 가르키는 레지스터
④ 메모리 버퍼 레지스터(MBR : Memory Buffer Register) : MAR이 지정하는 기억장치
주소에 있는 데이터를 임시로 적재하거나 결과값을 기억장치에 적재할 데이터를 임시
로 저장하는 레지스터
⑤ SI(Source Index), DI(Destination Index) : 메모리간에 대량의 데이터 전송 시 시작지
와 목적지의 위치를 가르키는 레지스터
⑥ 프로그램 카운터(PC : Program Counter) : IP(Instruction Pointer)라고도 불리우며 프
로그램에서 다음에 가져올 명령어의 주소를 가르키는 레지스터
전용 레지스터(2)
3) 스택 레지스터(STACK Register)
- 문맥 교환(Context)이 일어날 경우 이전 작업의 내용과 상태를 보존하기 위한 유지 영
역의 기능
- 관리를 위해 스택 포인터(SP : STACK Pointer)와 베이스 포인터(BP : Base Pointer)가 사
용된다.
4) 상태 레지스터(Status Register)
- 플래그 레지스터(Flag Register)라고도 불리우며 CPU의 다음 동작에 필요한 연산의 상
태를 저장하고 있다.
- 구성으로는 부호 플래그(Sign Flag), 0 플래그(Zero Flag), 오버플로우 플래그(Over Flow
Flag), 캐리 플래그(Carry Flag) 등이 있다.

similar documents