코딩일상
프로세서는 무조건 빠른게 좋은가?? 본문
전체 정리
프로세서와 메모리
- 프로세스의 속도가 매우 빠른 반면에 메모리의 속도는 매우 느리다.
- 현대 컴퓨터 아키텍처에서는 캐시라는 고속 메모리를 사용하여 메모리에서 정보를 오기를 기다리게 할 필요가 없게 한다.
파이프라이닝
- 명령어 여러 개를 동시에 처리하여 프로세서의 효율을 향상시키는 기법
멀티코어
프로세서 여러 개를 동시에 작동시키는 기법으로, 현재의 노트북과 휴대전회에서 널리 사용되는 기술이다.
프로세서 간의 속도 비교
각 프로세서마다 연산 방식이 다르므로, 프로세서 간의 속도를 비교하는 것은 어렵고 무의미하다.
따라서 어떤 프로세서가 더 빠르다는 주장은 조심스럽게 받아들여야 한다.
더 보기
1.프로세서(CPU)(Center Processing Unit)
프로세서는 컴퓨터 하드웨어에 부착한 모든 장치의 동작을 제어하고 명령을 실행한다.
중앙처리장치(Central Processing Unit)라고도 한다.
프로세서는 밑의 그림과 같이 구성되고, 이들은 내부 버스로 연결한다.
- 연산장치(ALU:Arithmetic & Logic Unit)
- 제어장치(CU:Control Unit)
- 레지스터(Register)
- 내부CPU버스
1-1)제어장치(인출,실행)
컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치
-명령 레지스터에서 읽어들인 프로그램 코드(명령어)를 해석하고,
해당하는 장치에 제어 신호를 보내 정확하게 실행하도록 지시
1-2)연산장치(해석)
제어장치의 명령에 따라 실제로 연산을 수행하는 장치
-연산장치는 산술,논리,관계,이동 연산을 한다.
-연산장치는 가산기, 누산기, 보수기, 데이터 레지스터, 오버플로우 검출기...등으로이루어짐
1-3)레지스터
CPU내부에서 처리할 명령어나 연산의 결과나 주소등을 일시적으로 기억하는 임식기억장소
-메모리중에서 속도가 가장 빠름
-레지스터는 새로운 데이터가 들어오면 기존데이터는 지우고 새로운 데이터만 기억
1-4)내부 CPU버스
연산장치와 레지스터간의 데이터 이동 경로
2.메모리
메모리는 컴퓨터 성능과 밀접하다. 당연히 크고 빠른 메모리는 가격이 비싸기 나름이다.
그렇기 때문에 메모리를 비용, 속도, 용량, 접근시간 대비 효율성을 높히기 위해
메모리 계층구조를 구성하여 상호보완한다.메모리 계층구조는 아래와 같다.
위의 그림에서 메인 메모리를 중심으로 아래에는 대용량의 자기디스크, 이동이 편리한 광디스크, 파일을 저장하는 속도가 느린 자기테이프등이 있다.(현 시점에는 메모리 기술이 발달하면서 SSD라는 디스크가 나왔는데, 자기디스크로 된 하드디스크보다 입출력 속도가 빠르고 플래시 메모리로 구성되어 있다.) 그리고 메인 메모리 위에는 메인 메모리와 프로세서의 속도 차이를 보완하는 캐시가 있다.
최상위에는 프로세서가 사용한 데이터를 보관하는 가장 빠른 레지스터가 있다.
프로그램을 실행하거나 데이터를 참조하려면 모두 메인 메모리에 올려야 한다. 그렇다고 무작정 메인 메모리를 크게할 수 없는데, 불필요한 프로그램과 데이터는 보조기억장치에 저장했다가 실행,참조할 때만 메인 메모리에 옮기는 원리를 적용하고 CPU에서 자주 사용되는 데이터는 캐시메모리에 임시저장한다거나 해서 서로 상호보완한다. 그리고 레지스터와 캐시, 메인메모리(메모리)는 프로세서(CPU)가 직접 접근할 수 있지만 보조기억장치(하드 디스크)는 프로세서(CPU)가 직접 접근할 수 없고 메인메모리에 올려야 접근할 수 있다.
2-1 메인메모리(주기억장치)
프로세서(CPU) 외부에 있으며, 프로세서에서 즉각적으로 수행할 프로그램과 데이터를 저장하거나
프로세서에서 처리한 결과를 메인 메모리에 저장한다.
입출력장치도 메인 메모리에 데이터를 받거나 저장한다. 메인 메모리는 다수의 셀로 구성되며, 각 셀은 비트로 구성된다.
위처럼 컴퓨터에 주어진 주소를 물리적 주소라고 하는데, 프로그래머는 물리적 주소 대신 프로그래밍을 할때 함수(수식)나 변수를 사용한다. 그리고 컴파일러가 프로그램을 기계 명령어로 변환할 때 변수와 명령어에 주소를 할당하는데, 이 주소를 논리적 주소라고 한다.
논리적 주소는 별도의 주소 공간에 나타난다. 컴파일로 논리적 주소를 물리적 주소로 변환하는데,이 과정을 매핑 또는 메모리 맵이라고 한다.
메인 메모리는 프로세서와 보조기억장치 사이에 있으며, 여기서 발생하는 디스크 입출력 병목 현상을 해결하는 역할도 한다.
그런데 프로세서와 메인 메모리 간에 속도 차이가 나면서 메인 메모리의 부담을 줄이려고
프로세서 내부나 외부에 캐시 메모리를 구현하기도 한다.
더보기 2
파이프라이닝이란?
동시에 여러 개의 명령어를 처리하므로써 처리량을 올리는 것이 파이프라이닝의 핵심이다.
모든 단계는 원래의 동작 속도대로 일을 하면서 처리량을 늘리는 것이지 원래의 동작 속도를 단축시키는 것은 아니다.
아래 그림을 통해서 확인해보겠습니다.
세탁소에서 다음과 같은 순서로 일을 한다고 가정해 보겠습니다.
과정 1: 빨래를 세탁기에 넣는다.
과정 2: 세탁기를 동작시킨다.
과정 3: 건조기를 동작시킨다.
과정 4: 빨래를 갠다.
순차적 처리
결과: 세탁물 1,2,3에 대해서 동시에 처리 할 수 없으므로 모든 작업을 마치는데 클럭이 12
파이프라이닝 기법 적용
결과: 클럭 7
매 클럭마다 여러 명령어를 중복된 단계 없이 처리한다. 각 처리부는 독립적으로 동작하므로
클럭 주기 4에서 과정 4, 과정 3, 과정 2, 과정 1을 실행할 수 있다. 즉, 최대 4개의 명령어를 동시에 실행할 수 있다.
명령어를 세분화 할수록 처리 속도 향상을 기대 할 수 있다.
(하지만, 실행할 명령어가 하나밖에 없거나 실행할 명령어 수에 비해 지나치게 단계를 세분화하게 되면 효율성을 기대하기 힘들 것이다.
하지만 일반적으로 CPU는 한 개의 명령어가 아닌 수십 개의 명령어를 함께 실행하기 때문에 효과적인 기술이 되고 있다.)
여기서 클럭이란??
클럭(clock)이란 CPU의 속도를 나타내는 단위입니다.
클럭은 1초 동안 파장이 한 번 움직이는 시간을 의미하는데, 이 시간 동안 처리하는 데이터 양에 따라 CPU의 속도가 달라지게 됩니다.
과거, CPU의 성능을 높이는 가장 편리한 방법은 클럭(동작 주파수)를 올리는 것이었습니다.
하지만 클럭이 높아질수록 발열량과 소비 전력이 커지는 문제가 발생하였습니다.
따라서 최근에는 클럭을 일정 수준으로 유지하는 대신, ‘멀티 코어’나 ‘멀티 스레드’ 같은 방식으로 CPU 성능을 높이고 있습니다.
이를 통해 하나의 CPU로 동시에 처리할 수 있는 연산 개수를 늘려 연산 능력 향상을 꾀하는 것입니다.
가장 효율인 파이프라인 조건
- 각 단계별 처리 시간이 일정 해야한다.
- 각 명령의 처리 단계는 균일 해야한다.
해저드(Hazard)
처리 시간이 일정하지도 않고 처리 단계가 균등하지 않아서 문제가 발생하는데 이를 해저드(Hazard)라고 한다.
- 구조적 해저드
- 데이터 해저드
- 제어 헤저드
레퍼런스 + 추가 공부사항
'Study > CS' 카테고리의 다른 글
[하드웨어]캐시 란?? (0) | 2022.07.30 |
---|---|
[하드웨어]슈퍼 컴퓨터란???? (0) | 2022.07.30 |
아날로그 정보를 디지털로 바꾸기 (0) | 2022.07.22 |
프로세스 칩 그리고 무어의 법칙 (0) | 2022.07.22 |
[CS스터디] 컴퓨터의 논리 구조/프로세서 속도 (0) | 2022.07.19 |