CPU는 컴퓨터의 뇌와 같은 핵심 부품이죠.
4코어 12스레드 cpu 이런 얘기들이 있는데
코어가 뭐고 스레드가 뭘까요?
코어(Core):
코어는 CPU 안의 실제 연산 처리 유닛을 의미합니다.
하나의 CPU 칩 안에 여러 개의 코어가 포함될 수 있습니다. 예를 들어, 4 코어 CPU는 네 개의 실제 연산 처리 유닛을 가지고 있습니다.
코어의 개수가 많을수록 CPU의 병렬 처리 능력이 높아지며, 멀티스레딩 작업에 유리합니다.
코어는 핵심입니다. 4코어면 간단히 말해 cpu가 4개인 셈. 그러나 그렇다고 4배로 빨라지는건 아닙니다.
멀티 코어 환경을 고려해서 프로그래밍이 돼야 합니다.
스레드(Thread):
스레드라는 단어는 2가지가 있는데. 하나는 프로세스 내에서 실행되는 작업의 단위이고
하나는 멀티스레딩을 지칭하는 단어입니다.
하나의 프로세스 안에 여러 개의 스레드가 있을 수 있으며, 각 스레드는 독립적으로 실행될 수 있습니다.
멀티스레딩을 사용하면 여러 스레드가 동시에 병렬로 작업을 수행할 수 있습니다.
멀티스레딩은 CPU의 멀티코어를 효율적으로 활용하여 작업을 가속화하는데 사용됩니다.
즉 멀티스레드라는 기술로.. 예를들면
2코어 4스레드면 마치 2코어인데 4코어처럼 컴퓨터에 인식시켜서 효율을 높인다는 것이죠.
이러면 하나의 코어가
클럭(Clock):
클럭은 CPU의 동작을 제어하는 주파수를 나타냅니다.
클럭 주파수는 초당 클럭 사이클의 수로 측정됩니다. 예를 들어, 2GHz 클럭은 1초에 20억 개의 클럭 사이클을 의미합니다.
클럭 주파수가 높을수록 CPU는 단위 시간당 더 많은 연산을 수행할 수 있으며, 일반적으로 높은 클럭 주파수는 높은 성능을 의미합니다.
그러나 클럭 주파수만으로 CPU의 성능을 완전히 평가할 수는 없습니다. 코어 수, 아키텍처, 캐시 크기 등 다른 요소들도 중요한 역할을 합니다.
즉 한 대의 cpu가 얼마나 많이 일할 수 있느냐입니다.
이외에 RAM을 비유하자면 가방에 뭔가를 넣고 다니는 것?
하드디스크는 창고. 즉 필요할때 창고에서 필요한 것만 빼서 가방에 넣고 다니면 되겠죠.
또한 캐시라는 것이 있는데
cache는 자주 사용하는 데이터로서 CPU에 내장되는 형태입니다.
쓰던거 또 계산하지 말고 한 번 계산해두면 계속 쓰는게 좋겠죠
그러면 cpu코어가 2개일때
8개 작업을 한다면
어떻게 컴퓨터가 이를 수행할까요?
여기서 '프로세스'라는 개념이 있습니다.
우리가 무언가를 실행하면.
cpu는 이를 창고에서 꺼내 가방으로 옮겨놓고 작업을 시작합니다.
즉 보조기억 장치에서 메인 메모리로 꺼내 실행하는 것이죠.
이 상태가 프로세스입니다.
가방 속에 처리해야할 업무가 8개라면
- 병렬처리를 합니다. 여러개를 동시에 하는 것이죠.
그렇지만 손이 2개여서.. 손 1개에 1개 일을 할 수 있다고 생각한다면
2가지 일밖에 못합니다.
6개 일은 멈춰있죠.
2. 병행처리를 합니다.
손이 1번일하고 2번일하고 3번일..... 8번일하고 이런식으로 번갈아 가면서 해두는 것이죠.
이렇게 바꾸는 것을 컨텍스트 스위칭이라고 합니다.
그리고 이렇게 병렬 + 병행을 하는 것을 '멀티 프로세싱'이라고 합니다.
프로세스 안에.. 즉 1개의 작업 안에서도 여러개의 작업으로 나뉠 수 있는데
이런 작은 단위를 스레드라고 부르며.(멀티스레딩의 스레드가 아니라, 작업 단위로서의 스레드. 2개의 단어임)
이런 스레드들이 동시에 실행되는 것을 '멀티 스레딩'이라고 합니다.
즉 프로세스를 분배하면
그 안에서 스레드는 자유롭게 배정됩니다.
그러면 애초에 프로세스를 분배하지 않고 모두 스레드로 자유롭게 배정하면 되는 것이 아닌가?
생각하면
그렇게 프로그래밍을 짜는 것이 쉽지 않기에
프로세스로 분리를 하고, 분리를 해둔 안에서는 자유롭게 배정되도록 하면 오류를 줄일 수 있겠죠.
애초에 2코어 4코어 안가고 1코어만으로 모두 해결할 수 있다면 좋겠지만
그럼에도 2코어 4코어 늘린 것은... 더 빠르게 컴퓨터의 성능을 늘리기 위한 선택이었던 것이죠.!
'■ Web개발 > 기초 지식' 카테고리의 다른 글
자바스크립트 Module 정리 (0) | 2024.07.07 |
---|---|
패키지 매니저 / 환경 변수 (0) | 2024.03.31 |
절차지향 객체지향 프로그래밍 (0) | 2024.03.31 |
정규화, 관계형/비관계형 DB (0) | 2024.03.31 |
SQL (0) | 2024.03.31 |