1.3프로세서
프로세서
12. 프로세서와 계산기의 다른 점
- 프로세서는 어떻게 작동할까?
⇒ 기본 연산들의 레퍼토리가 있음
- 산술 연산
- 메모리에서 연산을 수행할 데이터를 가져오거나 연산 결과를 메모리에 저장
- 컴퓨터의 나머지 부분 제어(버스로 전송되는 신호를 통해 마우스, 키보드, 디스플레이, 기타 전기적으로 연결된 모든 장치에 대한 입력과 출력을 조직화하고 조정)
⇒ 가장 중요한 것은, 프로세서는 결정을 내릴 수 있다는 점 : 계산기와 달리 사람의 개입 없이도 자동으로 작동 가능
13. 모형 컴퓨터로 더하기 프로그램 만들기
모형 컴퓨터의 대표적인 명령어(프로세서의 레퍼토리와 비슷)
- GET : 키보드에서 수를 입력 받은 후 누산기를 덮어씀
- PRINT : 누산기의 내용 출력
- STORE M : 누산기 내용 복사본을 메모리 위치 M에 저장
- LOAD M : 메모리 위치 M의 내용을 누산기에 적재
- ADD M : 메모리 위치 M의 내용을 누산기의 내용에 더함
- STOP : 실행 중지
각 메모리 위치에 한 개의 수 또는 한 개의 명령어가 담겨 있으므로, 프로그램은 메모리에 저장된 일련의 명령어와 데이터 항목으로 구성.
⇒ 프로그램을 작동하면, 프로세서는 첫 번째 메모리 위치에서 시작해 다음의 사이클 반복:
- 인출(Fetch) : 메모리에서 다음 명령어 가져옴
- 해석(Decode) : 명령어가 무슨 일을 하는지 알아냄
- 실행(Execute) : 명령어를 실행하고 인출 단계로 되돌아감
조건부 분기 및 새로운 명령어(루프 등)를 추가한다면, 어떤 계산이든 작은 단계로 나누어 기본 명령어만으로 수행이 가능해짐
14. 프로세서는 무조건 빠른게 좋을까?
컴퓨터 아키텍처 : 프로세서 설계와 더불어 프로세서와 컴퓨터 나머지 부분 간의 연결 방식 설계를 다루는 분야.
아키텍처의 주요 관심사 중 하나는 명령어 집합(instruction set)으로, 프로세서가 제공하는 명령어 레퍼토리.
⇒ 다양한 계산이 처리되도록 많은 수의 명령어가 있는 것이 좋을까?
⇒ 작성하기 쉽고 더 빨리 실행되도록 더 적은 명령어가 있는 것이 좋을까?
프로세서는 속도가 매우 빠름(명령어 1개를 1나노초보다도 더 빠른 시간 내에 수행)
메모리는 몹시 느림(데이터와 명령어를 메모리에서 인출하는데 10~20 나노초)
- 현대 컴퓨터 아키텍처는 캐시(cache)라는 고속 메모리를 몇 개 사용
- 캐시는 프로세서와 메모리 사이에 있고, 최근 사용된 명령어와 데이터 담고 있음
- 캐시에서 찾을 수 있는 정보에 접근하는 것이 메모리에서 정보가 오기를 기다리는 것보다 빠름
- 프로세서를 빠르게 하기 위해 명령어 여러개를 다양한 단계에 걸쳐 진행되도록 만드는 것을 pipelining이라고 함 (여러개의 명령어를 동시에 처리)
- 프로세서 여러개를 동시에 작업 (단일 집적회로 칩에 코어 여러개)
사용 분야에 따라 프로세서를 설계할 때 다양한 trade-off 이루어짐
- 전력/물리적 공간이 넉넉한 데스크톱 컴퓨터에선 프로세서가 가능한 빨리 작동하도록
- 노트북이 등장하며 물리적 공간이 협소하기 때문에 프로세서가 더 느린 대신 전력을 덜 씀
- 휴대전화, 태블릿 PC 등은 기존 설계와 많이 다르게 설계
⇒ 데스크톱, 노트북용 프로세서에서 인텔과 AMD가 공급자이지만 휴대전화와 태블릿 PC는 대부분 ARM의 프로세서 설계 사용(전력을 적게 사용하도록 설계)
프로세서 간에 속도를 비교하는 것은 어려울 뿐 아니라 큰 의미도 없음 : 산술 연산 같은 기본적인 작업조차 서로 다른 방식으로 처리되기도 함
- 전력 소모를 낮추고자 빠른 실행 속도를 포기하기도 하며, 전력이 배터리에서 공급되는지 아닌지에 따라 속도를 동적으로 조정하기도 함
- 어떤 프로세서는 고속 코어와 저속 코어의 조합으로 구성되어 코어 유형별로 서로 다른 작업 할당
15. 캐시가 뭔가요?
그러므로 우리는 메모리를 계층 구조로 만들 가능성이 있음을 결국 인식하게 된다. 여기서 각 단계의 메모리는 앞 단계보다 용량은 더 크고 접근 속도는 느리다. - 아서 벅스, 허먼 골드스타인, 존 폰 노이만, 1946 -
프로세서에서 캐시는, 용량이 작고 속도가 빠른 메모리
⇒ 용량이 더 크지만 훨씬 느린 주 기억 장치에 매번 접근하는 것을 피하고자 최근에 사용된 정보를 저장하는데 사용
- 일반적인 프로세서에는 캐시가 2~3개 있음
- L1, L2, L3 레벨이라고 부르고 뒤로 갈수록 용량이 크지만 더 속도가 느림
- 캐싱 과정에서는 대개 정보를 블록 단위로 동시에 불러옴
- 예를 들어, 단일 바이트에 대한 요청이 들어오면, 연속된 메모리 위치를 포함한 블록을 불러옴
- 인접한 정보라면 곧 사용될 가능성이 높기 때문
- 캐시는 뭔가를 다시 쓸 가능성이 있거나 근처에 있는 뭔가를 사용할 가능성이 있을 때 쓰는 더 보편적인 개념
- 메모리/디스크는 네트워크에서 오는 데이터를 빠르게 꺼낼 수 있다는 점에서 일종의 캐시
- 네트워크에서도 캐시를 쓰고 서버에서도 캐시를 사용
16. 슈퍼컴퓨터부터 사물인터넷까지
슈퍼컴퓨터(Supercomputer)
슈퍼컴퓨터는 과학기술 연산 등에 쓰이는 고속 컴퓨터로, 많은 수의 프로세서와 대량의 메모리 사용
- 프로세서 자체도 종래 프로세서보다 특정 종류의 데이터를 훨씬 빠르게 처리하는 명령어들로 구성
GPU(Graphics Processing Unit)
GPU는 범용 CPU보다 그래픽 관련 계산을 훨씬 빠르게 수행하는 그래픽 전용 프로세서
- 원래는 게임에 필요한 고속 그래픽 처리를 위해 개발
- 휴대전화용 음성 처리나 신호처리에도 사용
- 일반 프로세서가 특정한 종류의 작업을 빠르게 처리하는데 도움을 줌
- 간단한 산술 연산을 병렬로 대량 처리 가능하기 때문에 계산 작업이 병렬 처리 가능한 연산을 포함하며 GPU로 넘겨줄 수 있다면 전체 계산이 훨씬 빨라짐
- 머신 러닝에서 유용
- 큰 데이터셋의 여러 부분에 같은 계산을 독립적으로 수행할 일이 많음
분산 컴퓨팅(Distributed Computing)
네트워크로 연결되어 서로 독립적으로 작동하는 여러 대의 컴퓨터
- 메모리를 공유하지 않고 물리적으로 넓게 흩어져 있음
- 심지어 전 세계의 다양한 지역에 퍼져있기도
- 통신이 병목을 일으킬 수도 있지만, 사람과 컴퓨터가 공간적으로 멀리 떨어져 있어도 상호 협력이 가능
이 모든 컴퓨터들은 동일한 핵심 원칙, 즉 다양한 작업을 수행하도록 프로그래밍될 수 있는 범용 프로세서에 기반을 둠.
- 산술 연산 ⇒ 데이터 값 비교 ⇒ 기존 계산 결과에 기초하여 다음에 수행할 명령어 선택
Turing Machine : 단순한 컴퓨터가 매우 상식적인 수준에서 계산 가능한 것이면 어떤 것이든 계산할 수 있다는 것을 증명
⇒ 다른 어떤 튜링 머신이라도 모방하여 작동할 수 있는 튜링 머신을 만드는 방법도 보임: 범용 튜링 머신(Universal Turing Machine)
⇒ 모든 컴퓨터는 논리적인 면에서 같은 능력을 갖추고 있고(전반적인 아키텍처가 1940년대 후반 이래로 크게 바뀌지 않음), 물리적인 구조만 진화함(얼마나 빨리 계산하느냐의 차등)
- 튜링 테스트(Turing Test) : 컴퓨터/인간과의 대화를 통해 어느 쪽이 컴퓨터인지 확실히 구분할 수 없다면 컴퓨터가 인간 수준의 지적 행동을 수행하는 것으로 봄
- CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart): 역 튜링 테스트(reverse Turing test)의 사례로, 컴퓨터보다 사람이 시각적 패턴을 더 잘 식별할 수 있다는 점을 이용한 컴퓨터/사람 구분 시도
17. 요약
- 컴퓨터는 범용 기계
- 사용자가 메모리에 명령어를 넣어 컴퓨터가 수행하는 계산을 바꿀 수 있음. 명령어와 데이터는 맥락에 의해서만 구별됨(어떤 이의 명령어는 다른 이의 데이터)
- 최신 컴퓨터에서는 다수의 코어가 장착된 단일 칩이 주로 쓰임(물론 여러개의 프로세서 칩도 쓰임)
- 메모리에 더 효율적으로 접근하고자 집적회로에 캐시가 여러개 들어있음
- 컴퓨터의 명령어 집합 아키텍처를 정의하는 데에는 다양한 방식이 있고, 속도/전력소모/명령어 자체의 복잡성 같은 요인 간의 복잡한 trade-off를 수반
- 튜링은 기기의 종류와 무관하게, 전반적인 아키텍처가 정립된 현대식 컴퓨터라면 모두 정확히 같은 것을 계산할 수 있다는 의미에서 계산 능력이 같음을 증명함
- 컴퓨터 성능은 서로 다르지만, 속도/메모리 용량 문제를 제외하면 동등한 능력
다양한 컴퓨팅 처리를 하기 위해 새 기계를 여러 대 설계할 필요는 없다. 각 용도에 적합하게 프로그래밍된 하나의 디지털 컴퓨터로 모두 처리할 수 있다. -앨런 튜링, 1950-