병렬 컴퓨팅(Parallel Computing)
※병렬 컴퓨팅(Parallel Computing) 이란 무엇일까?
하나의 컴퓨터 또는 프로세서가 아니라 여러개의 컴퓨터나 프로세서가 동시에 일처리를 하여 작업 속도를 향상시키는것을 말한다.
- 멀티코어 프로세서(intel Core i7, i9) : 여러개의 독립적인 프로세서들이 하나의 칩(CPU,GPU, 메모리) 안에 내장되어 있고, 병렬적으로 작업 수행이 가능하다. 예를들어, 네개의 코어가 있는 프로세서는 네개의 각기 다른 작업들을 독립적으로 처리 할 수 있게 해준다.
위의 구조를 맨 위부터 자세히 살펴보자.
1. 프로세서 : 작업을 요청하는 곳이다. 프로세서가 작업을 요청하면, 원하는 작업이 캐시에 있는지 확인하러 캐시 레벨로 내려간다.
2. 캐시 : 캐시는 앞 글에서 설명했다. 모른다면 다시 글을 읽고 꼭 다시 보고 넘어가자!
3. Interconnection Network : 편하게 BUS라고 부른다. 이 버스는 컴퓨터 내부의 다양한 구성 요소들이 데이터를 주고 받을 수 있는 "통로" 라고 생각하면 편하다. 위 그림에서의 버스는 SRAM 과 DRAM과의 정보 전처리를 담당하는 역할을 한다. 버스의 속도와 너비는 컴퓨터의 성능과 효율에 큰 영향을 미치며, SRAM과 DRAM의 효율적인 통신을 위해 사용된다.
위 그림처럼 여러개의 프로세서가 있고, 각 프로세서는 독립적은 캐시를 가지고 있으며, 버스를 통해 DRAM과 상호작용 한다.
그러면 내가 위 그림 설명에서 UMA라고 하였는데, UMA는 무엇일까?
- UMA(Uniform)
여기서의 uniform은 무엇을 의미하는것일까?
위의 UMA 그림을 다시 살펴보자. 여기서 첫번째 프로세서가 동작하는 방식은 대략 이렇다.
1. 프로세서에서 작업(데이터) 요청
2. 캐시 방문(캐시 히트/ 미스) [이 상황에서는 캐시 미스라고 하겠다]
3. 버스에게 메시지 전달 ("1번 프로세서에서 캐시 미스! DRAM에서 요청한 메모리를 가져다 주기 바람!")
4. 메시지를 들은 버스는 DRAM에서 프로세서가 요청한 데이터를 "복사" 하여 다시 캐시로 올려준다.
이러한 일련의 작업들은 모든 프로세서에서 동일하게(uniform) 수행된다.