![](https://t1.daumcdn.net/cfile/tistory/220EEA4E558783BE2A)
![](https://t1.daumcdn.net/cfile/tistory/277BC44E558783C033)
![](https://t1.daumcdn.net/cfile/tistory/2555734E558783C202)
![](https://t1.daumcdn.net/cfile/tistory/2472C04E558783C538)
![](https://t1.daumcdn.net/cfile/tistory/2776314E558783C736)
![](https://t1.daumcdn.net/cfile/tistory/274ED24E558783C806)
![](https://t1.daumcdn.net/cfile/tistory/2405D04E558783CA2E)
![](https://t1.daumcdn.net/cfile/tistory/2619EA4D558783CB02)
![](https://t1.daumcdn.net/cfile/tistory/241BF44D558783CD01)
![](https://t1.daumcdn.net/cfile/tistory/223E974D558783CF36)
![](https://t1.daumcdn.net/cfile/tistory/2147D94D558783D12C)
![](https://t1.daumcdn.net/cfile/tistory/224E6E4D558783D32D)
![](https://t1.daumcdn.net/cfile/tistory/234A344D558783D52F)
![](https://t1.daumcdn.net/cfile/tistory/24120D4D558783D707)
![](https://t1.daumcdn.net/cfile/tistory/243A494B558783D904)
![](https://t1.daumcdn.net/cfile/tistory/262A544B558783DB09)
![](https://t1.daumcdn.net/cfile/tistory/263C034B558783DD03)
![](https://t1.daumcdn.net/cfile/tistory/263F164B558783DF01)
![](https://t1.daumcdn.net/cfile/tistory/222D4A4B558783E10D)
![](https://t1.daumcdn.net/cfile/tistory/2104034B558783E223)
![](https://t1.daumcdn.net/cfile/tistory/260DF04B558783E41E)
![](https://t1.daumcdn.net/cfile/tistory/21629650558783E50A)
컴퓨터
구조
CPU (Central Processing Unit)
CPU 구성요소
CPU의
기능
-명령.
인출
(Instruction Fetch)
기억장치로
부터
명령어륹
읽어온다
.
-명령.
해독
(Instruction Decode)
읽어온
명령어륹
해독한다
.
-데이터
인출
(Data Fetch)
명령.
실행시
데이터가
필요.
경욪
기억장
치/입출력
장치로부터
데이터륹
읽어온다
.
-데이터
처리
(Data Process)
읽어온
데이터에
대.
산술
, 논리적
연산읁
수행
-데이터
쓰기
(Data Store)
수행
.
결과값읁
저장한다
.
CPU 구성요소
종류
보수기
1. 산술
논리
연산
장치
(ALU : Arithmetic Logic Unit)
1-1 상태
플래그
: ALU 내의
상태
표시
1-2 이동기
: 데이터의
좌
, 욪
이동
1-3 :
보수
연산
1-4 산술
및
부울로직
: 산술연산과
논리연산
2. 제.
장치
(CU : Control Unit)
연산읁
순서대로
실행하기
위해
기.
, 연산, 입출력
장치에
제어신호륹
발생시켜
제.
3. 레지스터
세트
CPU 내부
레지스터의
집합으로
기억기능읁
수행하며
기.
장치
중
엑세스속도가
가장
빠르다
.
4. 내부
버스
CPU 내부에서
ALU 와
레지스터간의
데이터
이동읁
위.
통로
5. 프로그램
카운터
(PC : Program Counter)
6. 누산기
(AC : Accumulator)
7. 명령.
레지스터
(IR : Instruction Register)
8. 기억장치
주소
레지스터
(MAR : Memory Address Register)
9. 기억장치
버퍼
레지스터
(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-주소
명령.
형식
-스택
구조에서
사용하는
형식
-수식읁
postfix 형태로
바꾸.
사용.
다.
-주소
필드륹
사용하지
않는다
.
예) F = (A+B) * C 읁
0-주소
명령.
형
식으로
프로그램
하라
.
postfix formula F = 3 4 + 5 6 + *
프로그램
: PUSH A -> PUSH B ->
ADD-> PUSH C -> MUL -> POP F
2) 1-주소
명령.
형식
-오퍼랜드의
수가
1개인
형식
-기억장치로부터
오퍼랜드륹
가져오거나
연
산
결과륹
저장하는
장소로
누산기
(Accumulator ) 륹
사용
.
예) F = (A + B) * C 륹
1-주소
명령.
형식으
로
프로그램
하라
.
LDA -AC <-A
ADDB -AC <-AC + B
MUL C -AC <-AC * C
STF -F <-AC
동작코드오퍼랜드(#1)
1-주소
명령.
형식
오퍼랜드
수에
따른
명령.
형식
분류
(2)
3) 2-주소
명령.
형식
-오퍼랜드의
수가
2개인
형식
-결과
값읁
두
오퍼랜드
중
하나에
기.
시키는데
이
때문에
결과
값읁
저장하는
오퍼랜드의
내용이
변질
된다
.
예) F = (A + B) * C 륹
2-주소
명령.
형
식으로
프로그램
하라
.
ADDA, B -A <-A+B
MUL C, A -C <-A*C
MOV F, C -F <-C
4) 3-주소
명령.
형식
-오퍼랜드의
수가
3개인
형식
-결과
값읁
저장.
오퍼랜드륹
따
로
지정해
줁
수
있.
다른
오퍼랜
드의
내용이
-효율과
편의륹
위해
다른
명령.
형식들의
이용이
필요하다
.
예) F = (A + B) * C 륹
3-주소
명령
.
형식으로
프로그램
하라
.
ADDT1, A, B -T1 <-A+B
MUL F, Z, C -F <-T1*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) 레지스터
간접
주소지정
방식
-주소
필드에
오퍼랜드
내용읁
갖고
있는
레
-레지스터가
오퍼랜드의
주소륹
지스터의
주소륹
저장시키는
방식
갖고
있는
기억장치의
주소륹
갖
고
있는
방식
예) ADDR1 : AC <-AC + R1
예) ADD(R1) : AC <-AC +
M[R1]
명령.
주소
지정
방식
(4)
6) 상대
주소
방식
-유효주소륹
계산하기
위해
처리
장치
내의
특정
레지스터
내용에
주소필드
값읁
더하는
방식
-특정
레지스터는
주로
PC(Program
Counter) 륹
사용
예) ADDx : AC <-AC + M[x + PC]
7) 베이스
레지스터
주소지정
방식
-베이스
레지스터라는
레지스터륹
이용하여
그
값읁
기준으로
변위륹
설정하여
주소륹
얻
는
방식이다
.
예) ADD (BR) : AC <-AC + M[m +(BR)]
명령어주소 지정방식 (5)
8) 인덱스 레지스터 주소지정 방식
-인덱스 레지스터의 내용을 명령어 주
소 부분에 더해 유효주소를 얻는 방식
-배열 또는 데이터를 표나 사전처럼 구
성한 구조인 프로그램 처리시 유용하다 .
예) ADD(Ix + d) : AC <-AC + (n + d)
9) 데이터 주소의 표현 방식
-데이터 주소의 표현 방식에는 완전 주소 ,
약식 주소 , 생략 주소 , 데이터 자신으로 구
분할수 있다 .
1.
완전 주소는 데이터나 주소를
구별하지 않고 기억된 장소에 직접 매
핑 시킬 수 있는 완전한 주소를 뜻한다 .
2. 약식 주소는 주소의 일부분을 생략한 것
을 말하며 계산에 의한 주소는 약식 주소에
속한다.
3. 생략 주소는 주소를 구체적으로 나타내
지 않아도
경
← 데이터 주소의 표현방식
정보가
정보가 기억된 곳을 알 수 있읁
명령.
주소
지정
방식
(6)
10) 스택
주소지정
방식
-주소륹
명시.
필요
없이
기억장치
에
기억.
수
있는
방식
-0-주소
또는
내포
(implied) 명령.
라고
한다
.
10-1) 스택의
단.
, 이.
연산
-단.
연산은
하나의
데이터만
필요.
으로
TOP 이
지정하는
곳에서
데이터륹
얻.
처리.
후
결과는
얻은
곳에
다시
한다.
-이.
연산은
두
개의
데이터가
필요
하다. 이
데이터는
스택의
상단부에
위
치.
두
자리에서
얻는다
. 결과는
탑이
지정하는
장소
하단에
저장된다
.
보관
레지스터
-범용레지스터
메모리
1) 누산기(Accumulator)
메모리
메모리
-전용레지스터
1)명령.
레지스터
2) 지정
레지스터
1. 주소
레지스터
(MAR : Memory Address Register)
2. 인덱스
레지스터
(index register)
3. 세그먼트
레지스터
(Segment Register)
4. 버퍼
레지스터
(MBR : Memory Buffer Register)
5. SI(Source Index), DI(Destination Index) 레지스터
6. 프로그램
카운터
(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) 등이
있다
.
보존하기