cs-study-03 | 컴퓨터구조
CPU 내부 구조에 대해 설명하시오
- 제어장치 (Control Unit) : 메모리로부터 명령어를 얻어 기계어로 해석한 후 그 의미에 따라 연산장치, 메모리, 입출력장치 등에게 동작을 지시한다
- 레지스터: 명령어 주소, 코드, 데이터를 임시로 저장하는 고속의 기억장치
- 산술/논리 연산장치(Arithmetic Logic Unit) : 제어 장치로부터 전달받은 명령어를 바탕으로 사칙연산, 논리합, 논리곱 등의 연산을 수행하고 결과 값을 제어 장치에게 전달한다. (ex: LOAD, ADD, STORE) ALU는 수동적으로 연산처리를 하므로 CU의 명령이 필요하다
레지스터 종류
- 특수 레지스터 (SPR)
- Program Counter
- Accumulator
- Instruction Register
- Stackpointer Register
- MAR
- MDR
- 범용 레지스터 (GPR)
32비트 CPU와 64비트 CPU
프로그램 실행을 요청받은 CPU가 한번에 처리할 수 있는 메모리의 크기이다
즉, 32비트 CPU는 주어진 데이터를 32비트씩 잘라서 수행하고, 64비트 CPU는 64비트씩 잘라서 수행한다
한번에 수행하는 데이터가 많을수록 데이터 입출력이 줄고 연산이 빨라지기 때문에 64비트 CPU가 훨씬 빠르다
1 words 가 16bit 인가
실제로는 하위 48bit만 사용한다 , 큰 양의 memeory addressing이 필요하지 않기 때문이다
GPU란? - CPU와 차이
GPU (Graphics Processing Unit), CPU (Central Processing Unit)
CPU,GPU 의 성능지표
- 클럭(동작속도) 의 수치 => 높으면 단일 작업을 빠르게 처리하는데 유리
- 코어(핵심 회로)의 수 => 많으면 멀티 태스킹을 하거나 멀티코어 연산에 최적화된 프로그램을 구동하는데 이점
- 캐시 메모리(임시 저장소)의 용량 => 넉넉하면 덩치가 큰 프로그램을 구동하거나 자주하는 작업을 반복처리할 때 작업 효율을 높일 수 있다
CPU 는 명령어가 입력된 순서대로 데이터를 처리하는 직렬(순차) 처리 방식에 특화된 구조를 가지고 있다. 내부 면적의 절반 이상이 캐시로 채워져 있기 때문에 GPU에 비해 상대적으로 ALU가 차지하는 공간이 적다. 직렬처리에 최적화된 몇 개의 코어로 구성되어 있다 CPU는 고정소수점 데이터를 많이 사용하는 문서 작성 등 일상 생활의 작업(데이터 처리)을 빠르게 수행할 수 있도록 설계된다
GPU는 비디오, 즉 픽셀로 이루어진 영상을 처리하는 용도로 탄생했다. 이 때문에 GPU 는 여러 명령어를 동시에 처리하는 병렬 처리 방식에 특화된 구조를 가지고 있다. 캐시 메모리 비중이 크지 않고 연산을 할 수 있는 ALU개수가 많다. 병렬처리용으로 설계된 수 천개의 보다 소형이고 효율적인 코어로 구성되어 있다 GPU는 CPU로는 시간이 많이 걸리는 3D 그래픽 작업등을 빠르게 수행하도록 설계된다
고정소수점 vs 부동소수점
고정소수점(fixed point) : 7.625(10) -> 111.101(2)로 변환하는 방법. 부호, 정수부,소수부를 표현하는 비트로 각각 나뉘게 된다. 구현하기 편리하지만 표현할 수 있는 범위가 적다.
부동소수점(floating point) : 소수점이 고정되어 있지 않고 좌우로 움직일 수 있다. 부호, 지수부, 가수부를 표현하는 비트로 나뉘게 된다. 훨씬 더 넓은 범위까지 표현할 수 있지만 오차가 발생한다
CPU 제조사들은 정수나 고정소수점 데이터를 많이 사용하는 인터넷 서핑, 문서 작성 등 일상생활의 작업을 보다 빠르게 수행하도록 설계한다
GPU 제조사들은 CPU로는 시간이 많이 걸리는 부동소수점 실수 연산과 벡터연산을 가지는 멀티미디어, 특히 3차원 그래픽과 사운드를 잘 수행하도록 칩을 만든다.
RISC와 CISC 차이점
프로세서가 가진 명령어 세트를 기준으로 RISC와 CISC로 나눠진다
- RISC (Reduce Instruction Set Computer) : 핵심적인 명령어를 기반으로 최소한의 명렁어 세트를 구성한 프로세서이다. 고정적인 길이와 간단한 명령어로 빠른 동작 속도를 자랑한다(디코딩이 빠르기 때문) 그래서 여러개의 명령어를 처리할 수 있다 적은 명령어 세트를 가지고 있으므로 프로그램을 구성하는 명령어가 단순하지만 다수의 명령어를 필요로 한다. 명령길이가 고정되어 있기 때문에 코드효율이 낮다
- CISC (Complex Instruction Set COmputer): 연산을 처리하는 복잡한 명령어들을 수백개 이상 탑재하고 있는 프로세서이다. 명령어 길이가 다양하며 개수가 많아 (동시에 여러개의 명령처리는 어렵다) 프로그램의 구성이 복잡해지지만(디코딩에 시간이 오래걸린다) 소수의 명령어로 구현할 수 있다. (컴파일러 작성이 쉽다, 호환성이 좋다, 복잡한 명령도 마이크로 코드이므로 실행효율이 좋다)
레지스터 주소 지정 방식
메모리의 내용이 데이터/주소냐에 따라 Direct/Indirect Addressing으로 구분
-
Direct Addressing : 주소로 찾아가면 바로 데이터를 얻을 수 있다
- 장점 : 기억장치 접근이 한번에 이루어진다
- 단점 : 오퍼랜드 필드의 길이에 따라 접근할 수 있는 기억장치의 주소공간에 한계가 있다
-
Indirect Addressing : 주소로 찾아가서 내용을 보니 주소가 있어 그 주소로 가야 적재되어 있는 경우
- 장점 : 짧은 길이를 가진 명령어로 큰 용량의 기억 장소의 주소를 지정할 수 있다 ( 직접주소지정의 단점 해결 )
- 단점 : 두번의 메모리를 참조해야하므로 처리속도가 제일 느리다
-
간접 접근방법이 성능상으로 떨어지지만 데이터 활용면에서는 유리하다
캐시메모리는 무엇이며 왜 사용하는가
- CPU와 주기억장치 사이의 속도차이를 완화하기 위해 사용하는 메모리이다
- 캐시 메모리를 사용하면 주기억장치를 접근하는 횟수가 줄어들어 컴퓨터의 처리속도가 향상된다
- 당장 필요한 내용을 주기억장치에서 인출하여 캐시 메모리로 옮겨 메모리 접근시간과 CPU의 처리 속도를 맞춘다
- CPU 처리 속도 상승은 곧 성능의 향상이다
- 속도: 레지스터 > 캐시메모리
- 1차 캐시메모리 (대부분 CPU안쪽에 위치 ) , 2차 캐시메모리 (CPU 바깥쪽에 위치)
- CPU안쪽의 1차 캐시메모리라도 CPU에게 요청하는 시간이 있기 때문에 CPU와 한 몸인 레지스터의 속도가 더 빠름
- 캐시를 크게 하면 좋으나 가격이 비싸진다 그래서 병렬 기법(파이프라이닝, 슈퍼스칼라)이 나타났다
- 참조 지역성 : 주변의 데이터까지 가져온다
- 직접매핑 : hit rate가 낮다
- 간접매핑 :
파이프라이닝이란?
- 단일 사이클의 문제점(클럭 사이클 시간이 너무 길어진다)을 해결하기 위한 방법이다
- 하나의 명령어 싸이클을 여러단계로 나누고 각 단계에서 동시에 다른 명령어를 처리하도록 함으로써 CPU속도를 빠르게 하는 기술 ,
- 한 동작을 여러 단계로 나누어 동시에 여러 명령어를 실행하여 처리량(throughput)을 올린다 (처리시간이 빨라지는 것은 아니다)
- 슈퍼 파이프라인에 대해 알아보기
해저드
파이프라인으로 발생하는 문제이다
-
구조적 해저드
- 다른 단계에 있는 명령어들이 동시에 같은 자원을 사용하려는 상황
- 자원을 추가하거나 캐시를 사용해 해결한다
-
데이터 해저드
- 수행중인 명령 사이의 종속성
- 연산이 끝나기 전에 접근을 할 경우 처리 결과가 맞물린다
- forwarding , instruction 스케쥴링
-
제어 해저드
-
분기에 의해 발생
-
분기예측으로 해결 -> 예측 못하는 경우 지연 발생
-
슈퍼스칼라란?
- 한 명령어 사이클 동안 여러 개의 명령어를 동시에 처리할 수 있도록 설계한 CPU 구조
- CPU 내에 여러 개의 파이프 라인을 두어 명령어를 동시에 실행하는 기술
- 데이터, 자원, 프로시저 의존성을 가질 때 불가능
- 현대 컴퓨터에서 많이 사용함
- 파이프라이닝은 단일 코어이지만 슈퍼스칼라는 코어를 여러개로 구성했다
슈퍼파이프라인
0.5씩 중간에 중첩되게 한다
VLIW 프로세서
컴퓨터 기본 구조에 대해 설명하세요
-
컴퓨터는 하드웨어와 소프트웨어로 이루어져있습니다 하드웨어의 구성요소는 CPU, 기억장치, 입출력장치가 있으며 각 장치는 시스템버스로 연결되어 있습니다. 시스템 버스는 데이터와 명령 제어 신호를 각 장치로 실어 나르는 역할을 합니다
-
시스템버스
- 데이터 버스 : CPU와 기타 장치에서 데이터를 전달하는 통로입니다. 기억장치와 입출력장치의 명령어와 데이터를 CPU로 보내거나 CPU의 연산 결과를 기억장치와 입출력 장치로 보내므로 양방향 버스입니다
- 주소 버스 : 데이터를 실어나르기 위해서는 기억장치의 주소가 필요합니다. CPU가 기억장치나 입출력장치로 기억장치의 주소를 전달하는 통로이기 때문에 단방향 버스입니다
- 제어 버스 : 주소 버스와 데이터 버스는 모든 장치에 공유되기 때문에 이를 제어할 수단이 필요합니다. CPU가 기억장치나 입출력장치에게 제어 신호를 전달하는 통로입니다. 제어 신호에는 기억장치 읽기 및 쓰기, 버스 요청 및 승인, 인터럽트 요청 및 승인, 클락 , 리셋 등이 있습니다. 제어 버스는 읽기 동작과 쓰기 동작을 모두 수행하기 때문에 양방향 버스입니다
메모리의 구조는?
주기억장치의 용량이 크면 하드디스크에서 데이터를 가져오는 횟수가 줄기 때문에 처리시간이 줄어든다