컴퓨터 구조 - 병렬 처리
병렬 처리
1. 개요
요즘이야 GPU를 통한 병렬 처리가 엄청 대중화되어있는 시기이지만, 여기서 이야기하는 병렬 처리는 다수의 CPU가 있는 Multi-processors를 말하는 것이다.
이 Multi-processors라는 것은 한 개의 CPU안에 여러개의 코어가 있는 상황일 수도 있고, 혹은 다수의 CPU가 연결되어있는 상황을 말하는 것 일수도 있다.
2. 필요성
왜 이러한 병렬처리가 주목받게 되었는지는 많은 이유가 있다.
단일 프로세서의 성능의 한계
사실 이게 전부 일 수도 있다. 단일 프로세서의 한계가 무한에 가깝다면, 모든 사용자들이 이 프로세서하나에 연결해서 서비스를 운용하거나 서비스를 제공받으면 그만일테니까. 하지만 이 한계가 생각보다 일찍 와버렸고, 더 이상의 클럭 빈도는 늘지 않아서 한 개로 운용하기에는 성능이 부족해졌다.서버 성능 요구의 증가
옛날에는 서버에서 돌리는 건 기껏해야 작은 정도의 서비스나 개인에 국한되어있었다면, 인구도 많아지고 인터넷 보급도 대중화됨에 따라 성능의 요구가 늘어나는 것은 당연하다.멀티 프로세싱이 효과적인지 알게 됨
TLP(Thread Level Parallelism)만 하더라도 굉장한 성능 증가를 보였는데, 코어나 프로세서를 여러개 달면 얼마나 좋을까 라고 생각한 것도 무시 못할 거라 생각한다.어플리케이션이 병렬성을 가지게 됨
이미지 처리나, 네트워크 같은 것들은 병렬성을 가진다. 이런 것들은 한 개만 운용하는 것보다 다수의 프로세서를 운용하는게 훨씬 효율적이다.복제를 통한 디자인 투자 활용의 이점
뭔가 굉장한 한 개보다 여러 개의 단순한 걸 쓸 때가 효율적일때가 있기 때문이다.
3. 병렬 처리 구조
크게 보면 두 가지로 나눌 수 있다.
1) Centralized Memory Multiprocessor, Uniform Memory Access(UMA), Symmetric Multiprocessors(SMPs)
2006년에 등장한 방식으로 몇몇 프로세서(도합 100개 미만의 코어)를 이용해서 구성되며 작고 공유하기 좋은 한 개의 중앙화된 메모리를 가진 형태이다. 또한 기본적으로 큰 캐시를 가진다.
스위치를 통해 다수의 메모리 뱅크를 사용할수 있도록 확장 가능하며, 프로세서가 늘어날 수록 성능의 기대치가 줄어든다. 따라서 이 방식은 적은 프로세서수에 적합한 형태이다.
2) Physically Distributed-Memory MultiProcessor, Non-Uniform Memory Access(NUMA)
다수의 코어나 다수의 칩을 이용하여 구성하는 것으로 비용 효율적이다. 또한 각각이 메모리를 가지며 이를 공유하기 위한 BUS가 요구되는데 이 BUS를 해당 데이터가 모두 오고 갈 수 있는 메모리 대역폭(Bandwidth)를 요한다.
각각이 로컬 메모리를 갖고 있기 때문에 Local Memory에 엑세스할때는 성능이 매우 빠르나 다른 프로세서에 있는 memory에 접근할 일이 있을때는 매우 복잡해진다. 또한 프로세서가 늘어날 수록 메모리 대역폭에 대해서 신경을 써야한다.
※ 추가 업데이트 및 검증 예정이고, 올라간 부분도 아직 완벽하지 않으니 참고만 바란다.
참고자료
- Computer Organization and Design-The hardware/software interface, 5th edition, Patterson, Hennessy, Elsevier
- 서강대학교 이혁준 교수님 강의자료 - 고급 컴퓨터 구조