고정결선식 프로그램 컴퓨터
데이터->입력->하드웨어프로그램된것 ->도출 ...
프로그램 내장식 컴퓨터
메모리와 CPU간의 관계 ALU와 제어장치간의 관계
무어의 법칙
단일 마이크로칩에 포함된 트랜지스터가 18개월마다 약 2배씩 증가한다
황창규사장 황의 법칙
cpu가 아니라 메모리쪽에서 집적도가 어느 기간마다 증가하느냐에 대한 관찰
위에것들 cpu의 데이터 집적도 나타냄
ARM과 INTEL이 있는데 둘은 서로 다른 ISA를 갖고 있다 (instruction set architecture)
1주차 중요한거
1.
비트 : 정보 구성의 최소 단위 / 바이트 : 8bit = 1byte 정보 표현의 기본 단위 / 워드 : cpu에서 한번에 처리할 수 있는 비트의 집합
입력되는 워드 단위 정보를 제어장치는 명령어로 해석한다.
연산장치는 수치와 같은 데이터로 취급한다.
비트 조합으로 구성된 워드의 의미는??!
2.컴퓨터 하드웨어
전기적 신호로 구성된 정보를 이동하거나(바이트) 처리하는 물리적인 실체를 의미.
cpu = 모든 장치의 동작을 제어하고 명령을 실행하는 장치
컴퓨터 시스템의 논리적 구성 요소
마이크로프로세서는 cpu를 집적회로 형태로 만든 물리적 구성 요소
일반적으로 cpu와 micro processor는 구분 없이 사용
구성 : 제어장치+연산장치+레지스터+cpu 내부 버스
기억장치 레벨 순
1.레지스터 2. 캐시 메모리(SRAM) 3.메인 메모리(DRAM) 4. 보조 기억장치 (HDD, SDD)
주변장치 : 입,출력, 저장장치
기타 하드웨어 : 시스템 버스
시스템 버스란? 뭔가가 이동하는 통로?
주소 버스/데이터 버스/제어 버스가 있다.
메인보드 : 기능장치 사이의 호환성이나 확장의 범위를 결정/ 시스템 전반의 안정적인 동작 여부를 좌우
3.컴퓨터 소프트웨어
명령의 집합으로 구성된 프로그램 및 그와 관련된 "문서" 를 총칭하는 개념
하드웨어의 품질은 처리 능력을 높이고 소프트웨어의 품질은 컴퓨터 하드웨어의 사용 효율과 사용 환경을 결정한다.
!! 시스템 소프트웨어 : 컴퓨터 하드웨어를 제어 및 관리하는 기능 // OS랑 바이오스같은 거라고 생각되는데?
응용 소프트웨어 : 사용자가 하려는 작업을 수행하는 기능
사용자 -> 응용 프로그램 -> 시스템 소프트웨어 -> 하드웨어
하드웨어 -> 시스템 소프트웨어 -> 응용 프로그램 -> 사용자
시스템 소프트웨어
하드웨어 실행을 위한 필수적인 작업과 응용 소프트웨어의 실행을 지원하는 소프트웨어
목록 : 디바이스 드라이버/컴파일러, 인터프리터/링커/로더/운영체제
운영체제 : 컴퓨터 자원을 관리하고 응용 프로그램의 실행 환경을 제공
디바이스 드라이버 : 컴퓨터에 온라인으로 연결된 주변 기기를 제어하는 운영체제 모듈
링커 : 다수로 분할하여 작성된 프로그램에 의해 생성된 목적 프로그램 또는 라이브러리 루틴을 결합하여 실행 가능한
하나의 프로그램으로 견결하는 소프트웨어 ->내가 봤을때 이거 IDE와 비슷한 기능 하는거 같다.
고급언어 프로그램 -> 번역기(컴파일러, 어셈블러) -> 목적 프로그램(기계어 모듈) -> 링커(기계어로 구성된 라이브러리 루틴) ->
실행 프로그램(기계어 프로그램) -> 로더 -> 메모리
응용 소프트웨어 : 특정 분야에 사용하기 위해 제작된 소프트웨어
용도 : 사무/그래픽/멀티미디어/게임/통신 및 네트워크 등등
4.운영체제와 부팅
운영체제 = 자원을 효율적으로 관리/응용 프로그램의 공통된 서비스를 제공하는 소프트웨어 모음
사용자와 하드웨어 사이의 인터페이스 역할/하드웨어 고장 탐색, 오류 처리 및 보안 유지
보조 기억장치에 저장된 운영체제를 메인 메모리에 불러들이는 과정을 한다.
부팅 순서 1.전기가 들어오면 ROM에 저장된 부트로더가 실행됨 -> 2. 부트로더가 디스크에 있는 운영체제 커널을 찾아 RAM에 적재
3. 부트로더는 제어권을 운영체제에 전달.
결과적으로 RAM에 운영체제가 로딩된다.
5. 컴파일러와 인터프리터
어셈블리어의 사용
속도와 크기가 매우 중요한 프로그램/속도가 매우 중요한 프로그램의 일부분
오래된 컴퓨터 or 특수 목적의 컴퓨터/프로세서 동작 모드를 바꿔야 할 때
컴파일러와의 차이점
컴파일러는 기계가 알아들을 수 있게 번역을 하지만 인터프리터는 반대로
기계어를 사람이 알아들을 수 있게 번역을 한다.
6.컴퓨터의 분류
처리 능력에 의한 분류
태블릿/개인용/워크스테이션/미니/메인/슈퍼 컴퓨터
사용 목적에 의한 분류
전용 혹은 특수 목적 컴퓨터/범용 컴퓨터
응용 분야에 의한 분류
데스크톱/서버/임베디드 컴퓨터
사용 데이터에 의한 분류
디지털/아날로그
7.컴퓨터 구조, 구성, 실현
컴퓨터 구조
- 하드웨어와 소프트웨어의 인터페이스에 대한 설명을 의미하는 명령어 집합 구조
- 컴퓨터 아키텍처 혹은 cpu 아키텍처
- 프로그래머에게 보이는시스템의 속성
- 예 : 명령어 집합, 다양한 데이터 형식을 표현하는 데 사용되는 비트의 수, 레지스터의 개수나 형식, 메모리 주소 지정 방식
컴퓨터 구성
- 아키텍처 사양에 대한 형체를 제공하는 논리적인 골격, 즉 cpu와 각종 구성 요소, 관련 회로의 인터페이스에 대한 세부 사항
- 프로그래머에게 투명한 하드웨어 내역을 의미
- 컴퓨터 구현, 마이크로 아키텍처라고도 부름
- 예 : 직렬 덧셈장치나 병렬 덧셈장치, 고정결선식 제어장치 혹은 마이크로프로그램식 제어장치, 파이프라이닝, 캐시 메모리
컴퓨터 실현
- 컴퓨터 구현의 구체적인 버전으로, 어떤 컴퓨터 부품이 사용되며 그 부품들이 어떻게 서로 연결되고 배치되는지를 결정
예 : 신기술이나 부품의 신뢰성, 유지.보수, 냉각 방법, 실딩, 패키징
컴퓨터 계열
- 동일한 컴퓨터 구조를 사용하지만 다른 방식으로 시스템을 구현한 컴퓨터의 집합
- 컴퓨터 계열은 소프트웨어의 호환성이라는 개념을 제공
교재 5장 6장 커버하고 디지털 논리 회로에 대해서 공부했음
ADD 덧셈 / SUB 뺄셈 /MUL 곱셈 / DIV 나눗셈 / MOV 데이터 이동 / LOAD 기억장치로부터 데이터 적재
STOR CPU에서 메인 메모리로 데이터 저장
IEEE 754 표준
단일 정밀도 : 지수 : 8비트
바이어스 = 127
가수 : 23비트
표현 영역 : 10^-38~10^38
복수 정밀도 : 지수 : 11비트
바이어스 : 1023
가수 : 52비트
표현 영역 : 10^-308~10^308
벤치마크의 의미
성능을 평가하기 위하여 작업 부하로 선택된 프로그램의 모음
SPEC 벤치마크
- SPEC에서 개발한 워크스테이션이나 서버 등의 성능을 평가하는 데 사용되는 벤치마크
평가 척도
CPU를 위한 CPI, 클록 속도, MIPS, MFLOPS
CPU와 메모리 시스템 등의 성능을 종합적으로 평가할 수 있는 성능 척도인 SPECratio
MIPS나 MFLOPS등 과 같은 척도는 공급자에 의해 왜곡되어 사용될 수 있음
MIPS
① MIPS는 단순히 명령어를 실행하는 속도를 나타낼 뿐이지,
그 명령어 하나가 얼마나 많은 일을 수행하는지는 반영하지 못한다.
명령어 집합이 다르면 명령어 개수가 달라지기 때문에 단순히 MIPS 값으로만 성능을 비교할 수는 없다.
② 같은 컴퓨에서도 어떤 프로그램을 실행하느냐에 따라 MIPS 값은 달라진다.
그러므로 컴퓨터에서도 컴퓨터의 MIPS 값은 하나가 아니다.
MIPS = 명령어 개수 / (명령어 개수 x CPI)/클럭속도) x 10⁶ = 클럭속도 / CPI x 10⁶
③ 많은 명령어를 실행하지만 빠른 명령어를 사용하는 프로그램으로 바꾸는 경우,
컴퓨터 성능과는 반대로 MIPS 값이 작아진다는 점이다.
cpu 성능 : 실행 명령어 수 * CPI * 클록주기
단위 시간. = 1초에 수행한 명령어 개수를 100만으로 나눈 값
MIPS는 명령어 실행 속도 이므로 실행시간의 역수로 성능을 표시한다
CPI = Clock cycles per instruction
Million Instruction Per Second = (명령어개수/실행시간)x10^-6 = 클록속도(클럭 기가헤르츠)/CPIx10^6
실행시간 = 1/클록속도
Instruction/Cycles*10^6 이고 1/(cycles/instruction)*10^6 이랑 같다
2의 보수로 표현 된 2진수 음수를 10진수로 표현하기
2의 보수로 표현 된 음수에다가 2의 보수를 다시 한 번 취해서
10진수로 바꾸고 -부호를 붙인다
소수점을 포함하고 있는 이진수 표시
소수점 앞 까지는 매나 2로 나눠서 나머지 1이면 비트1 올라가는 식으로 하고
소수점 아래에는 2씩 곱해서 캐리가 1 발생하면 비트 1 올라가고
2곱했는데 캐리 발생 안하면 0비트로 처리한다.
0.625면 0.625를 2곱하면 1.250이고 1 캐리니까 비트 1
250곱2 하면 500인데 캐리 0이니까 0. 500곱2하면 캐리 1이니까 1. 이래서 소수점은 숫자~.101
2진 정수 덧셈 연산에서
오버플로우 검사할 때 SR 상태 레지스터가 검사하고
덧셈에서 MSB의 캐리와 msb를 넘어가는 캐리비트 부호가 같을 때는 넘어가고 다르면 sr이 태클건다.
성능식을 이용한 CPU성능 구하기
CPU 시간 = 명령어 개수 x CPI x 클럭 사이클 시간 (클럭 속도는 클럭 사이클 시간의 역수이므로)
CPU 시간 = 명령어 갯수 x CPI/ 클럭 속도
실행시간 = 초/프로그램 = 명령어 수 / 프로그램 x 클럭 사이클 수 / 명령어 x 초/클럭 사이클
전체의 곱인 실행시간 만이 유일하게 믿을 수 있는 척도다.
MFLOPS
1초에 실행한 부동소수점 연산의 수를 100만으로 나눈 값
MFLOPS=부동 소수점 연산 개수/실행시간*10^6
0-주소 명령어 컴퓨터 = 스택 컴퓨터
1-주소 명령어 컴퓨터 = 누산기 컴퓨터 - 연산 결과가 항상 ACC에 저장이 된다.
누산기 컴퓨터의 경우에는 피연산자가 1개면 된다. 주소필드 1개만 있어도 됨
0주소와 1주소는 현재 사용하지 않는 컴퓨터 형태이다.
2-주소 혹은 3-주소 명령어 컴퓨터 = 범용 레지스터 컴퓨터
1.레지스터 접근 시간이 동일 (스택 컴퓨터는 다름) - 컴파일러가 지정해 줌.
2.피연산자를 지정 함.(명시적 피연산자는 특수 목적 컴퓨터임, Acc, Store 등등등..)
3.메모리 트래픽이 발생하지 않음. CPU내부의 메모리를 사용하기 때문임.
4.범용 레지스터 컴퓨터 = LD/ST 아키텍처. LD/ST만 메모리에 접근할 수 있도록 하는 아키텍처가 로드.스토어 아키텍처. == 범용 레지스터 아키
5.ALU쓰는 연산들은 내부 레지스터 파일에서 가져온다. == 트래픽 발생 X => LD/ST로 메모리에 있는 데이터를 레지스터로 가져와서 ALU로 연산
주소 지정 방식
r : 피연산자 필드가 명시하는 레지스터 주소
a : 피연산자 필드가 명시하는 메모리 주소
ea(effictive address) : 참조되는 데이터를 포함하는 장소의 실제 주소 = 유효 주소
Reg[x] : 레지스터 x의 내용
M[x] : 메모리 x번지의 내용
주소번지를 어떻게 결정하는지에 따라 메모리 주소 지정 방식이 결정됨
0단계 주소 지정 방식
1. 즉치 주소 지정 = immediate addressing mode
2. 묵시 주소 지정 = implied addressing mode
1단계 주소 지정 방식
1. 레지스터 직접 주소 지정 =
2. 직접 주소 지정
2단계 주소 지정 방식 1번 2번은 알아두시는게 좋아용~
1. 레지스터 간접 주소 지정
2. 메모리 간접 주소 지정
3. 변위 주소 지정
4. 색인 주소 지정
5. 베이스 주소 지정
6. PC 상대 주소 지정
CISC : Complex Instruction Set Scomputer
2~300개 명령어 셋 / 가변 명령어 형식 / 많은 종류의 주소 지정 방식 / 호환성 양호 / 코드 밀도 양호
RISC : Redeuced Instruction~
80~120개 명령어 셋 / 비효율적 명령어 제거. 효율적 명령어 사용. 기본적 명령어 제공
메모리 가격 하락으로 CISC의 장점 없어짐. 그래서 현재 대부분 프로세서 RISC 쪽으로 가는 추세.
데스크탑이나 서버 컴퓨터는 CISC컴퓨터 사용. 자원이 제한되지 않음. 일반 컴퓨터들은.
단순한 명령어 짧은 사이클 시간 LD/ST 구조 Fixed instruction Length 단순 명령어 형식
5개의 기본 어드레싱 모드만 지원 = 제한된 종류의 주소 지정 방식
하버드 아키텍처 채용. 하버드 vs 폰노이만.
파이프라이닝에 효율적. 구현용이
폰 노이만 = 메모리에 인스트럭션과 데이터를 같은 물리적 메모리에 저장하는 아키텍처
하버드 = 인스트럭션과 메모리를 피지컬하게 분리시키는 것. 분리 시키면 폰노이만의 병목현상이 좀 희석된다.
picoMIPS 명령어 집합 구조 -> 참조만 하세요. 스킵.
MIPS에 기반한 ISA 16비트 아키텍처. = 데이터도 16비트 워드도 16비트
최대항 표준 합의 곱 PoS
최소항 표준 곱의 합 SoP
민텀이 A이면 1이고 ~A이면 0 텀이라는건 항이에요~
맥스텀이 A이면 0이고 ~A이면 1
플립플롭 = 휘발성 기억소자
@@@@@@@@@@@@@@@@@@조합 논리회로@@@@@@@@@@@@@@@@@@@@@@@
래치 = 마찬가지로 상태 저장가능 회로. 대신에 클락 입력에 동기화돼있지 않다.
클락 유/무에 따라 래치와 플립플롭을 구분할 수 있다.
클락이 없는 래치 회로@@@@@@@@@@@@@@@@@@@@@@@@
NOR 게이트를 이용한 R-S 래치
R(reset)과 S(set)단자가 존재. Q와 S는 Not관계 또는 1의 보수 관계다.
R->Q
S-.>~Q
S와 R이 둘 다 0이면 Q의 값과 ~Q의 값도 변하지 않는다.
@@ S와 R이 둘 다 1이면 동작하지 않는다. Q와 ~Q의 관계가 부정관계이기 때문이다.
NAND 게이트를 이용한 R-S 래치
기본적인 동작은 NOR게이트를 이용한 S-R래치와 동일하다. 해 보면 됨.
클락이 있는 회로@@@@@
R-S플립플롭
D플립플롭 (Data플립플롭)
R과 S에 동시에 1이 입력되는 것을 회로적으로 차단하거나 딜레이를 주기 위해 만든 것
J-K플립플롭 S=1, R=1인 경우 불능상태가 되는 것을 해결한 것. 1 1이 입력되면 이전 상태값의 부정으로 출력
T플립플롭(토글) 입력이 0이면 이전상태와 같고, 1이면 이전 상태의 부정값이 출력
CP는 Clock Pulse
@@@@@@@@@@@@@순차 논리회로@@@@@@@@@@@@@
이건 기억메모리가 있다. With Memory. 기억장치는 플립플롭으로 만들었죠
조합 논리회로+기억소자로 구성된다..
1. 동기식 순차 논리회로 = 클락 펄스가 들어오는 시점에서 상태가 변화하는 회로
2. 비동기식 순차 논리회로 = 클락펄스에 영향X 현재 입력되는 입력 값이 변화하는 순서에 따라 동작
@@@@@@@@@@@@@조합 논리회로@@@@@@@@@@@@@@@@@
기억할 필요 없어서 메모리가 없음
조합 논리회로의 대표적 : 가산기. 반가산기를 2개 붙이면 전가산기로 만들 수 있다.
Ex) 리모컨을 예로 들면 숫자 버튼을 눌러 채널을 누르면 그것은 "조합논리" 회로만 쓰는 것. : 가산기
그렇지 않고 이전채널, 선호채널을 누르는 것은 상태를 불러오는 버튼인데 이건 "순차 논리회로"
FULL ADDER를 병렬로 N개 이어붙이면 N비트 가산기다.
감산기 설계할 필요 없다! 왜? 2의 보수가 있기 때문이다. (음수 표현법 1. 부호화 절댓값 2. 1의 보수 3. 2의 보수)
패리티 비트는 에러 체크하는 용도로 쓰임
레지스터는 CPU내부. 플립플롭 여러개로 만든다.
카운터 = 계수기
클록 펄스에 따라 수를 세는 계수 능력을 갖는 논리회로.
입력에 들어오는 펄수의 수를 계수해 컴퓨터가 여러 가지 동작을 수행하는 데 필요한 타이밍 신호를 제공
동기식 VS 비동기식으로 부뉼된다. 동기식 카운터는 입력 펄스의 입력 시간에 동기된다.
따라서 모든 플립플롭이 동시에 동작하기 때문에 모든 플립플롭의 단에서 상태 변화가 일어나는 카운터다.
비동기식 카운터는 앞단의 출력을 받아 각 플립플롭이 차례로 동작하기 때문에
첫 단에만 클록 펄스가 필요하다. 그래서 직렬 카운터 또는 리플 카운터라고도 한다.
카운터는 비트 수에 따라서 최대 카운트가 결정된다. n비트 카운터일 때 2^n만큼 셀 수 있다.
프로세서 기술에 따른 CPU
1. 범용 2. 어플리케이션 특화 = 임베디드 시스템에 더 가까움. 3. 단일 목적 프로세서
CPU 디자인
컨트롤 유닛 = 제어부
-컨트롤러 -PC -IR(인스트럭션 레지스터)
데이터패스부
-ALU -레지스터파일
cpu내부에 빠른 메모리를 임베디드 해 놓은 것이 Cache 캐시 메모리라 한다
하나의 인스터럭션이 5개의 서브 오퍼레이션으로 분할된다.
1. Fetch : 다음 인스터럭션을 IR로 가져온다.(컨트롤 유닛부의 레지스터)
2. Decode : 인스트럭션을 해독한다.
3. Fetch operands : 메모리의 데이터를 데이터패스부의 레지스터로 가져온다.
4. Execute : 데이터를 ALU로 옮긴다.
5. Store results : 메모리에 레지스터의 데이터를 쓴다.
연산의 종류
전송 : 로드, 스토어, 무브
처리 : ALU
제어 : 브랜치(분기)
입출력 : 읽기 쓰기 등
빅 엔디언 vs 리틀 엔디언
빅 엔디언은 큰 수 비교하기가 쉬움. - ARM/MIPS/모토로라/선 스파크 머신 등등... 0x12345678 = 12.34.56.78
리틀 엔디언은 계산하기가 쉬움 - 인텔/덱/벡스-11등등 0x12345678 = 78.56.34.12
범용 레지스터는 모든 레지스터 접근 시간이 동일하다.
스택 컴퓨터는 레지스터 접근 시간이 다르다. pop해야 하기 때문에 해당 데이터가 스택 메모리 어디에 있느냐에 따라 다름
SRAM은 CPU내부, 플립플롭 기반의 메모리
DRAM은 CPU외부, 카페시터기반의 메모리
메인메모리에 cpu가 찾고자 하는 데이터가 없으면 보조기억장치로 가서 찾는다.
중앙처리장치 내부 : CPU의 처리속도와 비슷한 접근속도를 가진 레지스터들이 포함한다.
이러한 기억장치는 높은 가격 때문에 많은 용량으로 구성하기 어렵다.
캐시 기억장치 : 주기억장치에 비해 5~10배 정도 접근속도가 빠르다
자주 사용되는 명령들을 저장하고 있다가 중앙처리장치에 빠른 속도로 제공한다.
캐시기억장치의 용량에 의해 CPU의 가격이 결정된다.
'수업 > 컴퓨터 구조' 카테고리의 다른 글
컴퓨터 구조 기말고사 정리. (0) | 2021.06.15 |
---|