대칭형 멀티프로세싱(SMP)은 현대 컴퓨터 시스템에 널리 사용되는 아키텍처이지만, 그 역사에 대해서는 거의 논의되지 않습니다. 이 아키텍처의 기본 아이디어는 여러 개의 동일한 프로세서가 단일 공유 주 메모리에 연결되고 단일 운영 체제에 의해 관리된다는 것입니다. 이러한 협업 기능을 통해 각 프로세서는 서로 다른 작업을 병렬로 처리할 수 있어 시스템의 전반적인 성능이 크게 향상됩니다. 이 글에서는 역사를 살펴보고 SMP의 기원과 발전에 대해 알아보겠습니다.
SMP 시스템은 일반적으로 중앙 주 메모리를 공유하고 단일 운영 체제에서 실행되는 여러 개의 유사한 프로세서로 구성됩니다. 각 프로세서에는 전용 캐시 메모리가 장착되어 있어 주 메모리에 대한 접근 속도를 높이고 시스템 버스 트래픽을 줄입니다. 초기 SMP 시스템에서는 기술이 대역폭과 전력 소비에 의해 제한되는 경우가 많았으며, 설계에 병목 현상이 발생하기도 했습니다. 그 이후로 그리드 아키텍처가 도입되면서 확장성 문제는 개선되었지만 프로그래밍 복잡성은 극복해야 했습니다.
“SMP 시스템은 작업 데이터의 위치에 관계 없이 모든 프로세서가 모든 작업을 실행할 수 있도록 허용합니다. 단, 작업이 시스템의 다른 프로세서에 의해 실행되지 않는 한 말입니다.”
초기 멀티프로세서 시스템 중에서, 1961년 버로우즈 B5000이 최초의 생산 시스템이 되었지만, 여전히 비대칭 작동 방식을 취했습니다. 1962년 버로우즈 D825가 출시되면서 SMP의 개념이 점차 구체화되었습니다. IBM의 System/360 시리즈 컴퓨터도 듀얼 프로세서 컴퓨팅 시스템을 출시하여 SMP 아키텍처를 적용했습니다. 대기업들이 이 분야에 진출하면서 SMP 시스템이 점차 발전하여 주류가 되었습니다.
SMP는 타임 쉐어링과 서버 시스템에서 널리 사용되는데, 이는 애플리케이션을 수정하지 않고도 병렬로 실행되는 여러 프로세스를 지원할 수 있습니다. 개인용 컴퓨터에서는 많은 애플리케이션이 아직 멀티스레딩에 맞게 수정되지 않았기 때문에 SMP의 유용성이 떨어집니다. SMP의 이점을 활용하려면 멀티스레드 프로그래밍이 중요한 고려사항이 됩니다.
현재 SMP 시스템 설계에서는 여러 프로세서를 긴밀하게 결합할 수 있지만, 이는 확장성과 성능 측면에서도 문제가 됩니다. 멀티프로세서 시스템은 처리량을 높일 수 있지만, 성능 최적화의 격차를 메우려면 신중하게 설계된 운영 체제와 효율적인 소프트웨어 지원이 필요하여 하드웨어 활용을 극대화해야 합니다.
"SMP 환경에서 여러 프로그램을 동시에 실행하면 시스템 성능이 단일 프로세서 시스템보다 훨씬 뛰어납니다."
SMP를 사용하는 시스템은 최대 성능을 얻기 위해 단일 프로세서를 사용하는 시스템과는 다른 프로그래밍 기술이 필요합니다. SMP 시스템에서는 여러 개의 프로세서를 사용하여 프로그램을 동시에 실행할 수 있습니다. 이를 통해 멀티태스킹 능력이 향상될 뿐만 아니라, 프로그램 작동이 더욱 원활해집니다. 프로그램이 개선될수록 작업 부하를 더 잘 분산할 수 있을 것입니다.
컴퓨팅 수요가 증가함에 따라 NUMA(Non-Uniform Memory Access)와 같은 새로운 아키텍처가 등장했는데, 이를 통해 프로세서가 로컬 메모리에 더 빠르게 액세스하고 공유 메모리에 대한 의존도를 줄일 수 있습니다. 일부 환경에서는 NUMA가 더 효율적인 데이터 액세스를 제공하지만, 워크로드 분산을 수행할 때 한 프로세서에서 다른 프로세서로 데이터를 이동하는 비용이 비교적 높습니다.
초기 모듈형 컴퓨터 시스템부터 효율성을 추구하는 현대의 멀티 프로세서 아키텍처까지, SMP의 발전은 의심할 여지 없이 기술 발전의 중요한 부분입니다. 기술이 계속 발전함에 따라, 미래에는 어떤 새로운 기술이 멀티 프로세서 협업에 대한 우리의 이해에 도전하고 이를 개선하게 될까요?