배고픈 개발자 이야기
1.컴퓨터 시스템 개요 & 2.논리회로 & Question 본문
1. 컴퓨터 시스템 개요
1.1 컴퓨터의 기본 구조
컴퓨터시스템의 구성 = H/W+S/W (응용 소프트웨어 - 시스템 소프트웨어 - 하드웨어)
컴퓨터 하드웨어의 주 구성요소(를 Bus구조로 연결)
1.중앙처리장치(CPU,프로세서)
2.기억장치 : 주기억장치 - 직접데이터엑세스 RAM, ROM / 보조저장장치 - 주기억으로 옮김 디스크, CD-ROM
3.입출력장치
하드웨어 : 컴퓨터 자체를 구성하는 물리적인 실체들(신호전달 및 모니터출력)
소프트웨어 : 실제구동하기 위해 명령어로 구성되는것
1.시스템 소프트웨어 : OS, library code
2.응용 소프트웨어 : 워드, 웹브라우저 등
중앙처리장치(Central Processing Unit: CPU)
프로세서 : CONTROL, ALU, REG
프로그램 실행과 데이터 처리를 담당
(Instruction set architecture, ISA)는 CPU가 인식해 실행할 수 있는 기계어로
(data type, 명령어, register, 어드레싱 모드, 메모리 구조, 인터럽트, 예외처리, 외부 입출력, opcode)을 포함
기본기능 : 하드웨어 기반으로 코딩된 기계어 코드를 정해진 순서대로 실행
코드실행 과정 : read - processing, store
기억장치
1.주기억장치
CPU 가까이에 위치하며, 반도체 기억장치 칩들로 구성
고속 엑세스
저장 용량의 한계, 비트당 비용이 높고 면적을 많이 차지
영구 저장 능력이 없기 떄문에, 일시적 저장장치로만 사용
2.보조저장장치
-기계적인 장치가 포함되기 떄문에 저속 액세스
-저장 밀도가 높고, 비트 당 비용이 저가
-영구 저장 능력을 가진 저장장치
1.2 정보의 표현과 저장
컴퓨터 정보: 2진수(디지털)
프로그램 코드
기계어(순수 2진 비트로 구성 - 컴퓨터 하드웨어 부품들이 이해할 수 있는 언어)
어셈블리언어 - 기계어와 1:1로 대응하도록 문자화한것으로 간단한 기호로 만들어 사용자가 기계어를 사용할 수 있게함
고급 언어와 기계어 사이의 중간역할
컴파일러를 통해 기계어로 바꿔 실행함, 고급언어-> (어셈블리 ->) 기계어
컴파일러 : 기계어 프로그램으로 번역하는 소프트웨어
어셈블러 : 어셈블리 프로그램을 기계어로 번역하는 소프트웨어
연산 코드(op code) : cpu가 수행할 연산을 지정해 주는 비트들, 2^3 byte
오퍼랜드(operand) : 기억장치 주소 혹은 연산에 사용될 데이터가 올 수 있음 2^5 byte, byte가 아니라 bit인듯
001(op code)/ 00101(operand): X + Y
word - 한주소에 저장되는 단위
bit(b), Byte(B)
8, 16진법 - 2진법으로 표기하면 너무길고 10진법으로 사용하면 컴퓨터가 이해를 못함
10진법(SI) - pico, nano, micro, milli, k, M, G, T, P,
2진법(IEC) - Ki(2^10), Mi(2^20), Gi(2^30), Ti(2^40)
단위가 중요한 이유 - 2로 표현하면 10진법과 차이가 많이 나서
ex) kiB = 1024, kB = 1000 : 24byte만큼 차이남
컴퓨터시스템의 전체 구성
1.3 시스템의 구성
1.3.1 CPU와 기억장치의 접속
시스템 버스 : 연결된 요소들 사이에 정보를 교환하는 통로
기본 구성
1.주소 버스(CPU->MEMORY(주소)) 단방향
CPU가 외부로 발생하는 주소 정보를 정송하는 신호선의 집합(찾아갈 때 씀)
비트 수 = 16bit면 2^16개의 기억 장소들의 주소지정 가능(보통 반으로 나눠 전송함)
2.데이터 버스(I/O<->M<->Processor)
CPU가 기억장치 혹은 I/O 장치와의 사이에 데이터를 전송하기 위한 신호선의 집합
데이터 버스폭 : 8bit, 16bit 한번에 전송 가능한 비트 수
3.제어 버스
CPU가 주변장치의 동작을 제어하기 위한 신호선의 집합(READ, WRITE, 인터럽트 신호)
양방향일 수도 단방향일 수도 있음
ex) 데이터를 써라 = CPU가 주소를 보내고, 데이터를 보내고, 쓰기신호를 보냄
데이터를 쓰는 시간 : 처음부터 저장완료까지 걸리는 시간 (동시 신호 발생)
읽기는 데이터 방향이 반대가되며 데이터방향이 반대가 됨 (데이터 신호 늦음)
1.3.2 CPU와 I/O 장치의 접속
제어신호 : CPU - BUS - I/O - BUS
I/O 장치 제어기(인터페이스): 제어 명령 받아서 제어하고, 데이터 이동명령 수행하는 전자회로 장치
상태 레지스터 : I/O 장치의 현재 상태를 나타내는 비트들을 저장한 레지스터(RDY, ACK bit등)
데이터 레지스터 : CPU와 I/O 장치 간에 이동되는 데이터를 일시적으로 저장하는 레지스터
ex) 상태 레지스터가 RDY = 1이 되면 데이터를 CPU로 가져오게됨
키보드, 프린터 : 바이트 단위로 전송
보조저장장치 : 블록(1KiB, 4KiB) 단위로 전송
1.3.3 컴퓨터시스템의 전체 구성
프로그램 실행, 데이터 저장, 데이터 이동, 데이터 입력/출력, 제어
1.4 컴퓨터 구조의 발전 과정
주요 부품들의 발전 과정
릴레이(전자석 붙떨) -> 진공관(진공튜브속 전자에 열을 가해 전기 발생)
-> 트랜지스터(반도체 이용한 회로) -> 반도체 직접회로(IC, 트랜지스터 활용한 회로)
개선점
처리속도 향상, 용량 증가, 크기 감소, 가격 하락, 신뢰도 향상
최초의 컴퓨터(기계식) 기계적 장치들이어서 속도가 느리고 신뢰도가 낮다.
ENIAC(전자식, 진공관)
문제점 : 프로그램 저장과 변경 불가능
폰 노이만 설계 개념 도입(Stored-program 개념) : 2진수 사용, 프로그램 내장, 순차적 실행 -> IAS 컴퓨터
주요 구성요소
1.제어장치 : 명령어 인출/해독 (CPU속)
2.ALU : 산술논리연산장치
3.주기억장치 : 명령어와 데이터를 모두 저장
4.입출력장치
PC 프로그램의 실행순서를 결정하는 중요한 register
트랜지스터(최초의 반도체 회로) : 진공관을 대체
1.작고 싸며 적은 열을 발산
2.반도체 재료인(si)로 만들어진 고체(solid-state) 장치
3.2세대 컴퓨터로 분류
4.초기 컴퓨터들은 약 1000개의 트랜지스터들로 간단한 구성
직접회로(IC)
1.수만 개 이상의 트랜지스터들을 하나의 반도체 칩에 집적시킨 전자 부품
2.3세대 컴퓨터로 분류
IC의 제조 과정
실리콘 웨이퍼에 작은 장치를 필름형태로 넣음(작은칩(안에 소자)를 연결)
실리콘 자르고, 회로인쇄,테스트후 정상 die를 마운팅(연결 다리 생성)
집적도에 따른 IC의 분류
SSI - 수십 개의 트랜지스터로 집적된 IC 디지털 게이트들을 포함하는 칩
MSI - 수백 개의 트랜지스터로 집적된 IC (counter, decoder, shift register)와 같은 순조합 회로나 순차회로를 포함하는 칩
LSI - 수천 개의 트랜지스터로 집적된 IC 8비트 마이크로프로세서 칩이나 소규모 반도체 기억장치 칩
VLSI - 수만,수십만 트랜지스터 집적된 IC 386, 486등에 사용, 마이크로프로세서 칩들과 대용량 반도체 기억장치 칩
ULSI - 수백만 개 이상의 트랜지스터로 집적되는 32비트급 이상 마이크로프로세서 칩들과 수백 메가비트 이상의 반도체 기억장치
칩들 및 앞으로 출현할 고밀도 반도체 칩들을 지칭하기 위한 용어로 VVLSI라고도 함
IC 사용에 따른 이점
전기적 통로 짧아져 빨라짐, 크기 작아짐, 칩상호연결(신뢰성 향상), 전력 감소 냉각장치 소형화
가격하락, 4세대 컴퓨터 시작하면서 개인컴퓨터 출현
1.4.3 컴퓨터시스템의 분류와 발전 동향
개인용 컴퓨터
캐시, MMI, 산술보조프로세서등이 CPU칩에 내장됨에 따라 속도 및 신뢰도가 향상
다수의 ALU들 혹은 명령어 실행 유니트들을 포함하는 슈퍼스칼라구조, 듀얼코어등
새로운 버스 규격(USB), DRAM메모리칩 용량의 추세(Moore's law, 1년 6개월에 2배)
임베디드 컴퓨터(내장형)
최소의 비용으로, 필요한 만큼의 성능 제공, 실시간 처리
중형급 컴퓨터시스템
워크스테이션
CPU 64-비트 마이크로프로세서 사용
3차원 동영상처리, 시뮬, CAD등
OS : UNIX, LINUX사용
슈퍼미니컴퓨터
CPU 20~30개
OS : UNIX
서버급 시스템의 다운사이징 주도
-> 네트워크에 접속된 다수의 중형급 컴퓨터 시스템들을 응용별로 구분하여 사용하는 컴퓨팅 환경이 가능해지게 함
다중프로세서시스템의 구조(CPU->PU)
메인프레임 컴퓨터
대용량 저장장치, 여러 입출력 고속처리, 대규모 데이터베이스
학교,관공서,대기업 컴퓨터
슈퍼컴퓨터
실수연산을 1초에 Tera급으로 TFLOPS
파이프라인 슈퍼컴퓨터
한 CPU내에 다수의 연산장치
대규모 병렬컴퓨터
수백 수천 수만개의 프로세서
IBM BlueGene/L
클러스터 컴퓨팅
여러컴퓨터 고속 네트워크연결하여 사용
2. 논리회로
2.1 신호, 논리연산자, 게이트
NOT : F = X'
AND : F = XY
OR : F = X+Y
XOR : F = X'Y + XY', 1의 개수가 홀수 = 1, 짝수 = 0
NAND : F = (XY)'
NOR : F = (X+Y)'
XNOR : F = (XY)'+XY, 1의 개수가 홀수 = 0, 짝수 = 1
2.2 불함수 표현식
기본적인 불 대수식은 AND, OR, NOT을 이용하여 표현
불 대수 공리
X = 0 or 1로 표현
교환, 결합, 분배 법칙(X+YZ=(X+Y)(X+Z), 증명)
드모르간의 정리 (X+Y)' = X'Y', (XY)' = X'+Y'
흡수 법칙 X+XY = X, X(X+Y)= X
합의의 정리
진리표로부터 최소항(최대항)식을 표현하는 방법
1.출력이 1인것을 모아 따로 표시
2.각각을 OR로 묶어 정리
3.최대항은 출력이 0인것을 표시
실제 최소항 표현
2.3 Minterm
최소항 표현법
00 a'b', 01 a'b, 10 ab', 11 ab
f = a'b+ab'+ab : (m1+m2+m3, 시그마m(1,2,3)) 출력이 1인것만 표시하여 합침
f'의 1인 출력만 표시하여 합친다음 전체에 NOT을 하여도됨 f'' = f
f''을 드모르간의 정리를 이용하여 풀면 최대항이 된다.
간소화하는 과정(가격 및 성능에 경쟁력)
1.불대식 기본법칙 사용
X+X'=1, X+1=1, X*1=X, X*0=0, X+X=X
묶어서 줄임, xyz = xyz + xyz 사용하여 묶어도 됨, aa' = 0 을 추가하여 더해도됨
한개씩 다른항을 검사하여 간소화
2.Karnaugh MAP 사용(주로 쓰임)
3.QM(사람이 하긴 힘들고 컴퓨터한테 시킬 때 유용)
카르노 맵을 이용한 간소화
2.4 K-MAP
2변수 3변수 4변수 일 때 유용
시간과 실수를 줄일 수 있음
2변수 일 때, 4가지 : 2X2로 나타냄
-f가 1인 곳만 표시하고, don't care는 0, 1둘 다 상관없을 떄 X로 표시
-가로 혹은 세로로 묶어서 간소화 할 수 있음 ex) A'(B'+B) = A', B로 묶을 때(중복하여 묶어도 됨)
-가능한 많이, 크게 묶는 것이 좋음 (X + X = X 이용, 더 간단해짐)
3,4변수 카르노 맵
-2변수가 들어갈 때 00 01 11 10 꼭 이 순서로(한 bit씩 달라야 소거하기 좋음)
-2의 지수승으로 묶을 수 있음
-양쪽 끝이 이웃해있으므로 묶을 수 있다.
-don't care는 묶어도 안묶어도 상관없음
0132
4576 순서대로 항이 들어감
12131514
891110
선택적 카르노맵 : 답이 여러개일 때가 있을수도 있음
논리식을 다시 카르노맵으로 나타낼 수 있고 간소화확인
지그재그 형태의 카르노맵의 XOR, XNOR
1 0 1 0
0 1 0 1 일 때 1의 개수가 짝수 이므로 XNOR 게이트, 홀수면 XOR 게이트
0 1 0 1
0 1 0 1 열 인덱스의 XOR
Question & Answer
chapter 1
1.중앙처리장치(CPU)가 하는 역할은 무엇일까요?
-컴퓨터 시스템 통제 + 프로그램 연산을 실행하는 제어장치
-입력받고, 해석 연산, 출력, 모든 컴퓨터의 작동과정을 제어
2.기억장치에는 주기억장치와 보조저장장치가 있는데 어떻게 다를까요?
-주기억장치는 직접 CPU와 신호를 주고 받을 때 사용하는 기억장치로 휘발성이 있고 bit당 가격이 비쌈
-보조기억장치는 반영구 저장 및 주기억장치에 필요할 때 데이터 전송용도, bit당 가격이 저렴
3.산술논리연산장치(ALU)란 무엇일까요?
두 숫자의 산술 논리연살을 처리하는 디지털 회로로 컴퓨터 프로세서의 기본 설계 블록
4.레지스터(register)란 무엇일까요?
다양한 레지스터가 있는데 보통 컴퓨터내에서 자료를 보관하는 아주 빠른 기억 장소로 일반적으로 현재 계산을 수행중인 값을 저장하는데 사용됩니다. 대부분의 현대 레지스터는 메인메모리->레지스터(처리)->메인메모리(저장) : 로드-스토어설계
5.기계어, Low level language, high level language에 대해 설명해 줄 수 있으세요?
기계어는 컴퓨터가 해석가능한 2진법으로 구성된 언어 low level language는 기계어를 사람이 사용하기 편하게 1:1로 문자화 한것 high level langauge는 사용자가 더욱 편리하게 프로그래밍을 하기 위한 언어
6.2진법, 10진법, 16진법의 컴퓨터에서의 사용용도는??
2진법은 컴퓨터가 바로 해석하여 실행가능한 진법, 10진법은 사용자가 해석하기 편한 진법 16진법은 2진법 표기가 너무길어서 짧게 표현하기 위해 사용하는 진법
7.키보드 엔터키를 눌렀다고 가정했을 때 시스템 버스의 전송 과정은??
인터럽트가 발생하고 레지스터의 값이 바뀐 후 CPU가 동시에 주소, 읽기신호를 보내고 데이터를 입력 받음
8.CPU실행속도를 빠르게 해주는 방법에는 어떤것이 있을까요?
캐시를 사용하여 메인메모리에서 자주 사용하는 영역을 바로 부를 수있는 CPU메모리 역할과 슈퍼스칼라구조로 CPU내의 파이프라인을 여러 개 두어 명령어를 동시에 실행하는 기술과 보조프로세서로 CPU연산을 나누어 빠르게 할 수 있다.
chapter 2
1.카르노맵의 좋은점??
간소화하는데 걸리는 시간과 실수를 줄일 수 있다.
2.3변수 이상의 카르노맵의 행 인덱스에서 00 01 11 10 순으로 쓰는 이유가 뭘까요?
인접항과는 1bit의 차이가 나야 간소화하기 위해 묶는 과정이 정상적으로 실행될 수 있다.
'전산학 > 컴퓨터구조' 카테고리의 다른 글
6.보조저장장치 & 7.시스템버스, I/O및 인터럽트 & 8.고성능 컴퓨터 시스템 구조 (0) | 2019.09.14 |
---|---|
3.컴퓨터 산술과 논리 연산 & 4.제어 유니트 & 5.기억장치 (0) | 2019.09.14 |