[정보처리기사 필기]
제2과목 전자계산기구조
1) 논리회로
불 대수 정리
논리회로 보고 논리식 맞추기
A=1010 B=1100
AND 값 : 1000
OR 값 : 1110
XOR(Exclusive-OR) = A’B + AB’
JK 플리플롭
J=0, K=0 -> 반전X
J=0, K=1 -> 0으로 리셋
J=1, K=0 -> 1로 셋
J=1, K=1 -> 동작하지 않음 (이를 해결하기 위해 RS 플립플롭 탄생)
JK 플립플롭의 두 입력선을 묶어서 한 개의 입력선으로 구성한 플립플롭 = T 플립플롭
- 카르도맵 그리는 법 알고 있기 (두자리일 때 00, 01, 11, 10 순서 꼭 기억)
- 반가산기 = AND회로와 XOR회로 조합
- Full Adder(전가산기)는 2개의 Half Adder(반가산기)를 OR회로로 묶어 구성
- 전가산기의 합의 동작을 얻을 수 있는 것 = XOR(배타적 OR)
- n비트의 2진 병렬 가산기 구성 : n개의 전가산기로 구성
2) 자료의 표현
8바이트의 필드가 더블워드면, 하프워드는 ? : 2바이트
풀워드 기준으로 2배는 더블워드, 1/2배는 하프워드
4비트 : 1니블
64가지의 각 다른 자료를 나타내리면 최소 몇 개 비트 필요? 6개
비트가 n개일 때 2^n개의 자료 표현 가능
2진수 0011에서 2의 보수는? : 1101
1의 보수를 구하고 1을 더한다
음수를 표시하는 방법
1의 보수
부호 및 크기 : 양수 표현에서 부호 비트 0을 1로 변환
2의 보수
16진수 (BC.D)를 8진수 표현
10진수로 B는 11, C는 12, D는 13
2진수로 나타내면 10111100.1101
8진수로 나타내기 위해 3개씩 쪼개자 : 10/111/100.110/1
빈곳은 0으로 채우기 : 010/111/100.110/100
8진수 : 274.64
음수를 표현할 때, 정수 범위
표현범위
부호 및 크기 : -(2^(n-1)-1) ~ +(2^(n-1)-1)
1의 보수 : -(2^(n-1)-1) ~ +(2^(n-1)-1)
2의 보수 : -2^(n-1) ~ +(2^(n-1)-1)
-121을 2의 보수로 표현하면?
1) 우선 +121을 2진수로 나타내자 : 01111001 (+이기때문에 자릿수맞춤)
2) 1의 보수로 바꾸기 : 10000110
3) 2의 보수로 나타내기 위해 1더함 : 10000111
10진수 BCD코드로 나타내기 : 한자리당 2진수 4비트로 표현
10진수 8을 3초과 코드로 표시하면?
10진수 8을 BCD 코드로 나타내고 3더하기 1000 + 0011 = 1011
2진수 1011을 Gray Code로 변환하면?
최상위 수는 그대로 내려줌 1->1
이후 자리부터는 앞자리 수와 XOR연산해서 내려줌
따라서 1110
패리티 체크를 하는 이유는? : 전송된 부호의 에러를 검출하기 위해
디지털 코드 중 에러 검출 및 교정이 가능한 코드는? : 해밍 코드
음수를 나타낼 때, 2의 보수법이 1의 보수법보다 좋은 점은?
올림수가 발생하면 무시한다
지수 bias가 64면, 지수 -64~+64까지 표현 가능
2^(-65)는 언더플로우, 2^(65)는 오버플로우 발생
해밍코드
P1 : 1357
P2 : 2367
P3 : 4567
아직 잘 모르겠음 + 추가 공부 필요
3) 프로세서
주기억장치에 기억된 명령 해독, 시스템에 신호 보내는 것
제어 장치(Control unit)
ALU 목적
ALU는 연산 장치 - 실제로 연산을 수행하는 장치 (산술과 논리 연산)
다음에 실행할 명령 번지를 갖고 있는 레지스터는?
프로그램 카운터 (PC)
누산기 - 연산 결과를 임시로 기억하는 장치
프로그램 상태 워드(PSW)
명령 실행 순서 제어, 실행중인 프로그램의 시스템 상태를 나타냄
PSWR이라고 불리며, 시스템 내부의 순간 순간 상태를 기록하고 있는 정보
플래그 레지스터 (=프로그램 상태 레지스터)
명령이 시작되는 최초의 번지를 기억하고 있는 레지스터
베이스 레지스터
명령어 길이 16bit, OP code 6bit, operand 10bit일 때 연산자 종류 최대 수는?
OP code가 6비트이기 때문에, 2^6으로 64개
연산자의 기능
함수 연산
자료 전달
제어
입/출력
명령어 정리
store : 레지스터 내용 메모리로 전달
load : 메모리 내용 레지스터로 전달
move : 레지스터 간 자료 전달
push : 스택에 자료 저장
pop : 스택에서 자료 꺼내옴
단항 연산
complement
shift
rotate
move
이항(binary) 연산
AND
OR
74라는 8비트 수에서 가장 좌측은 부호, 나머지는 절대값을 나타낼 때 우측으로 한 비트 이동하면?
74를 8비트로 나타내면 -> 01001010
최상위 비트인 0은 부호를 나타내기 때문에 그대로 내려오고 나머지는 우측으로 하나씩 옮기기 00100101 -> 37
마스크(Mask)를 이용해 불필요한 부분 제거 연산
AND 연산
selective-set 연산 수행-> OR연산 하기
스택 구조를 가질 때 가장 밀접한 관계가 있는 명령어는?
0-주소 명령어
하나의 오퍼랜드가 누산기에 포함된 명령어는?
1-주소 명령어
3-주소 명령어는?
연산의 결과가 operand 3에 저장되며, 명령어 한 개의 길이가 길어지고 프로그램의 길이가 짧아짐
접근 방식에 의한 주소지정 방식
묵시적
즉시
직접
간접
계산에 의한 주소지정 방식
절대
상대
베이스
인덱스
명령어 주소 부분 + PC 값
상대 주소 지정 (relative address)
명령어의 operand 부분에 실제 데이터를 갖고있는 방식
즉시 주소지정 방식
주소 지정 방식 중 속도가 가장 빠른 방식은?
즉시 주소지정 방식
주소 설계 시 고려해야 할 점
수행 속도 증가
표현의 효율성
사용의 편리성
주소공간과 기억공간 독립성
명령어(Instruction) ADD(500)이 수행되면 어떤 것이 연산장치로 보내지나? (500)은 간접 주소를 뜻하고 2002가 저장되어 있음
2002의 내용이 연산장치로 보내짐
응용 프로그래머가 프로그램을 작성할 때, 직접 레지스터 내용을 다룰 수 있는 것은?
인덱스 레지스터 (주소 변경, 서브루틴 연결 등 반복 계산 횟수 세는 레지스터)
인터페이스와 컴퓨터시스템 사이에 데이터의 이동을 제어하는 장치
I/O 제어기
4) 명령 실행과 제어
마이크로 오퍼레이션을 순서적으로 발생시키는데 필요한 것
제어 신호(Control signal)
동기 가변식
오퍼레이션마다 사이클 타임이 현저히 차이날 때
중앙처리장치 시간 효율적 이용 가능
서로 다른 사이클 정의 가능
동기 고정식
오퍼레이션의 사이클 타임이 유사한 경우
수행시간이 가장 긴 오퍼레이션을 사이클 타임으로 정함
중앙처리장치 시간 비효율적
cpu처리 속도 느려짐 (마이크로 사이클 타임이 진행되면서 지연시간 발생)
비동기식
오퍼레이션마다 서로 다른 사이클 타임을 정함
중앙처리장치(CPU)가 무엇을 하고 있는지 나타내는 상태
메이저 스테이트 (fetch, indirect, execute, interrupt)
CPU의 명령(instruction) 수행 순서
명령(instruction) fetch
명령 디코딩
operand fetch
실행(execution)
인터럽트 조사
인터럽트 요청을 받고 인터럽트 처리 후에 실행되는 사이클은?
인터럽트가 발생하면? 현재 수행 중인 명령 완료 후 상태 기억하고 인터럽트 처리
그 후에 원래 보존한 상태로 복귀하여 다음 명령을 호출하는 ‘fetch 사이클’ 실행
명령이 수행되기 전, 가장 우선적으로 이루어져야 하는 마이크로 오퍼레이션
MAR <- PC (프로그램 카운터를 메모리 주소 레지스터로)
간접 상태(indirect state) 동안 수행되는 것
operand의 번지(주소)를 읽음
EAC <- AC + MBR 있으면 ADD연산
AC <- 0 있으면 LOAD to AC
메이저 스테이트 중 하드웨어로 실현되는 서브루틴 호출로 볼 수 있는 것
인터럽트
분기(branch)나 인터럽트가 발생하면 CPU내 어떤 장치의 내용이 바뀐건가?
프로그램 카운터(PC)
분기 : 현재 처리되는 작업을 완료한 뒤 다음 작업 처리가 아닌 외부 요청 처리하는 것
인터럽트 요인 발생 시 CPU가 처리해야 하는 것
프로그램 카운터 내용
관련 레지스터 내용
스택 내용
마이크로 오퍼레이션 수행에 필요한 시간은?
마이크로사이클 타임
5) 기억장치
기억장치에 읽기 요청 발생 직후부터 요청한 정보를 찾아 전송을 완료할 때 까지 시간
접근 시간(Access time)
Access time = seek time + latency time + transmission time
대역폭이란?
계속적으로 기억장치에서 데이터를 읽거나 기억시킬 때 1초 동안에 사용되는 비트 수
ROM IC
Mask ROM : 제조과정에서 내용 기입 (수정 불가능)
PROM : 한번만 내용 기입 가능, 수정 불가능
EPROM : 자외선을 이용해 지우고 다시 사용 가능
EAROM : 전기적 특성을 이용해 일부 변경 가능 (alterable)
EEPROM : 전기적 특성을 이용해 여러번 지우고 사용 가능
SRAM (정적 램)
플립플롭 사용
전원 공급되는 동안 기억 유지
속도 빠름, 용량 낮음, 가격 높음
캐시 메모리
DRAM (동적 램)
콘덴서 사용
주기적 재충전(refresh) 필요
속도 느림, 용량 큼, 가격 낮음
주기억장치
기억장치 용량 = 2^(입력 번지선 수) * 출력 데이터
기억용량이 1M byte일 때, 필요한 주소선의 수는?
워드의 크기 언급없으면 1byte로 간주
1M byte = 2^20byte -> 20개 주소선 필요
기억장치 용량 4096워드, 워드 길이 16비트일 때 4096 = 2^12 프로그램 카운터 (PC) = 12 주소 레지스터 (AR) = 12 데이터 레지스터 (DR) = 16
순차처리 - 자기 테이프
랜덤 처리 - 자기 디스크, 자기 드럼, 자심
블록 팩터 : 하나의 블록을 구성하는 레코드의 수
블록의 크기 / 레코드의 크기
연관 기억장치
신속한 검색 가능
주소 필요 X
하드웨어 비용 큼
기억 장치 접근 속도 향상 목적
메모리에 저장된 항목 찾을 때, 주소를 사용하지 않고 기억된 정보의 일부분을 이용해 접근하는 기억장치는?
연관 기억장치
또는 CAM이라고도 함
주소접근보다 속도 빠름
연관 메모리 특징
CAM (주소매핑 과정 필요 X)
메모리에 저장된 내용에 의한 접근
기억장치에 저장된 항목 찾는 시간 절약
캐시 메모리
컴퓨터 성능을 높이기 위해 명령 처리속도를 CPU 속도와 같게 하는 기억장치
메모리 인터리빙 (메모리 접근 속도 향상)
캐시 기억장치, 고속 DMA로 많이 사용
기억장치 접근시간을 효율적으로 높임
각 모듈을 번갈아가며 접근 가능
고속 블록 단위 전송 가능
캐시 기억장치
고속, 고비용
주기억장치와 CPU사이 일종의 버퍼 기능 수행
컴퓨터 처리 속도 향상
수십~수백kbyte 용량 사용
가상 기억장치
주기억장치의 용량 확대가 주 목적 (속도향상X)
실제로는 보조기억장치를 사용하는 방법
프로그램 크기에 제한 받지 않고 사용 가능
매핑
가상 기억장치에서 주기억장치로 자료의 페이지를 옮길 때 ‘주소를 조정’해주는 것
캐시 적중률
캐시적중횟수/전체기억장치액세스횟수
16바이트 블록 크기, 64블록 캐시, 1200 바이트 주소가 매핑되는 블록 번호는?
캐시 블럭번호 = 메모리블럭번호 mod 캐시블록수
메모리 블럭번호 = 주소/블럭크기
1200/16 = 75
75 mod 64 = 11
직접 매핑
주소 기준 검색
같은 인덱스 가졌으나 다른 태그를 가진 두 개 이상 워드가 반복 접근하면 히트율이 낮아짐
128MB = 128000000 -> 2^27로 저장 가능
'정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 요약 정리본 (0) | 2018.06.30 |
---|---|
정보처리기사 필기 오답노트 (0) | 2018.04.19 |
[정보처리기사 필기] 3과목 운영체제 (0) | 2018.04.17 |
[정보처리기사 필기] 1과목 데이터베이스 (0) | 2018.04.09 |