[컴퓨터 구조] 빠른 CPU를 위한 설계 기법
클럭 (Clock)
컴퓨터 시스템에서 동기화된 신호로, 모든 동작을 조정하는 기반 신호입니다.
클럭 신호가 빠르게 반복되면 컴퓨터 부품들은 그에 맞춰 더 빠르게 작동할 것입니다. 실제로 클럭 속도가 높은 CPU는 일반적으로 성능이 좋습니다.
클럭 속도 (Clock Speed)
클럭이 초당 발생하는 펄스의 수를 나타내며, 컴퓨터의 처리 속도와 성능에 직접적인 영향을 미칩니다.
헤르츠(Hz) 단위로 측정합니다. 이는 1초에 클럭이 몇 번 반복되는지를 나타냅니다.
하지만 클럭 속도를 무작정 높이면 발열이 심해지는 문제가 있습니다.
코어와 멀티코어 (Core and Multi-core)
프로세서의 실행 유닛으로, 하나의 프로세서 칩 내에 여러 개의 코어를 통해 다중 작업을 동시에 수행할 수 있습니다.
코어는 ‘명령어를 실행하는 부품’입니다. 코어가 여러 개라는 것은 ‘명령어를 실행하는 부품’이 여러 개라는 것입니다.
코어를 여러 개 포함하고 있는 CPU를 멀티코어 CPU라고 부릅니다.
CPU의 연산 속도가 꼭 코어 수에 비례하여 증가하지는 않습니다. 연산이 얼마나 적절하게 분배되느냐에 따라 연산 속도는 크게 달라집니다.
분류
다음은 멀티코어 CPU에서의 코어 개수에 따른 분류를 나타낸 표입니다
코어 개수 | 분류 |
---|---|
1 | 싱글코어 |
2 | 듀얼코어 |
3 | 트리플코어 |
4 | 쿼드코어 |
6 | 헥사코어 |
8 | 옥타코어 |
10 | 데카코어 |
12 | 도데카코어 |
스레드와 멀티스레드 (Thread and Multithreading)
CPU의 스레드라는 용어에는 CPU에서 사용되는 하드웨어적 스레드가 있고 프로그램에서 사용되는 소프트웨어적 스레드가 있습니다.
하드웨어적 스레드 (Hardware Threads)
스레드를 하드웨어적으로 정의하면 ‘하나의 코어가 동시에 처리하는 명령어 단위’를 의미합니다. 하드웨어적 스레드의 동작 방식은 다음과 같습니다
- 실행 단위의 증가: 하나의 코어는 여러 개의 하드웨어적 스레드를 지원함으로써 동시에 여러 개의 작업을 수행할 수 있습니다.
- 실행 순서 교환: 하드웨어적 스레드 간에는 작은 시간 간격으로 실행 순서가 교환되며, 각 스레드는 자신에게 할당된 시간 동안 실행됩니다.
- 자원 공유: 하드웨어적 스레드는 하나의 코어 내에서 실행되므로 캐시 메모리나 레지스터 등의 자원을 공유하게 됩니다. 이로 인해 캐시 미스 등의 오버헤드를 줄일 수 있습니다.
- 병렬성 확보: 하드웨어적 스레드를 통해 여러 작업을 동시에 처리함으로써 병렬성을 확보하며, 응답 시간을 단축하고 처리량을 향상시킬 수 있습니다.
다양한 하드웨어적 스레드 기술이 존재하며, 이를 통해 다중 작업을 효율적으로 처리할 수 있는 장점을 얻을 수 있습니다.
소프트웨어적 스레드 (Software Threads)
스레드를 소프트웨어적으로 정의하면 ‘하나의 프로그램에서 독립적으로 실행되는 단위’를 의미합니다. 소프트웨어적 스레드의 특징은 다음과 같습니다
- 독립적 실행: 하나의 프로그램 내에서 실행되는 각각의 소프트웨어적 스레드는 독립적으로 실행됩니다. 이는 프로세스 내에서 여러 작업을 동시에 수행할 수 있는 장점을 제공합니다.
- 자원 공유: 하나의 프로세스 내에서 실행되기 때문에 스레드 간에는 메모리 공간을 공유할 수 있습니다. 이를 통해 효율적인 데이터 교환과 자원 활용이 가능합니다.
- 응답성 향상: 하나의 스레드가 블록되거나 대기 상태에 빠져도, 다른 스레드는 계속해서 실행될 수 있어 전체 응답성이 향상됩니다.
- 경제성: 프로세스 간의 전환 비용보다 스레드 간의 전환 비용이 더 적으므로, 스레드를 사용하면 시스템의 자원을 더 효율적으로 활용할 수 있습니다.
- 다양한 스레드 모델: 소프트웨어적 스레드는 프로그래밍 언어나 운영체제에서 제공하는 다양한 스레드 모델에 따라 관리될 수 있습니다.
소프트웨어적 스레드를 사용함으로써 프로세스 내에서 다중 작업을 효율적으로 관리하고 병렬성을 확보할 수 있습니다.
멀티스레드 프로세서 (Multithreaded Processor)
하나의 코어가 여러 개의 스레드를 동시에 실행할 수 있는 프로세서입니다. 멀티스레드 프로세서의 주요 특징은 다음과 같습니다
- 병렬 작업 처리: 멀티스레드 프로세서는 하나의 코어 내에서 여러 개의 스레드를 동시에 실행할 수 있어 병렬 작업 처리에 유리합니다.
- 자원 공유: 멀티스레드 프로세서는 캐시 메모리 등의 자원을 공유하면서 스레드 간의 효율적인 데이터 공유가 가능합니다.
- 응답 시간 개선: 하나의 스레드가 블록되거나 대기 상태에 빠져도, 다른 스레드는 계속해서 실행될 수 있어 전체 응답 시간을 개선합니다.
- 스레드 간 경합 감소: 멀티스레드 프로세서는 하나의 스레드가 대기하는 동안 다른 스레드를 실행할 수 있으므로 스레드 간의 경합을 줄입니다.
- 처리량 향상: 병렬 작업 처리로 인해 전체 처리량이 증가하며, 시스템 성능을 향상시킬 수 있습니다.
멀티스레드 프로세서는 다중 작업 처리에 있어서 효율적인 해결책을 제공하며, 다양한 응용 분야에서 활용됩니다.
댓글남기기