설계 딜레마:

성능 경합지난 십년 동안 데스크톱 프로세서 디자인을 차별화 시켜주는 요소는 단순히 속도였다. 인텔이나 AMD와 같은 기업들은 프로세서를 설계함에 있어서 한 가지 목적에 전념했다. 즉, 두 회사는 무엇보다도 고주파 프로세서를 개발하고 발표하는 데 집중했다.세계 최초의 GHz 프로세서를 앞서 발표하기 위한 경합에서 최종 승자는 결국 AMD가 차지했다. 두 회사의 관심이 자신들의 목표에 집중돼 있는 동안, 서서히 산업계는 더 높은 클록 주파수 프로세서와 관련하여 늘어난 하드웨어 복잡성을 인식하게 되었다. 산업계는 또한 클록 주파수를 무한정 증가시킬 수는 없으며 다른 방법이 필요하다는 사실을 깨닫게 되었다. 이에 따라 프로세서의 효율성 개선은 물론, 쓰레드 단위의 병렬실행(TLP : Thread Level Parallelism)을 통해 전체적인 성능을 향상시키는 방법으로 멀티프로세서(MP: Multiprocessor)와 멀티쓰레딩(MT: Multithreading) 기술이 출현하게 되었다.인텔은 하이퍼쓰레딩(Hyper-Threading)이라고 하는 MT 기술 개발에 집중하는가 하면, AMD는 듀얼 코어 개발에 자사의 역량을 집중하는 등 양사는 홈 컴퓨팅 분야에서 진정한 MP 솔루션을 제공하는 최초의 기업이 되고자 노력했다. 그럼, 무엇이 이 걸출한 두 반도체 회사를 MP쪽으로 발상의 전환을 이끈 것인가?최근의 이러한 멀티프로세싱으로의 전환은 데스크톱에서 임베디드 설계 분야로까지 인기가 확산되면서 다수의 소프트웨어에 대한 발상의 전환을 요구하고 있다. 여러 해 동안 임베디드 설계자들은 자신들의 설계에 여러 개의 프로세서를 내장함으로써 한정된 전력으로 더 나은 계산 능력을 구현할 수 있었다. 오늘날 임베디드 시장에 영향을 미치는 사실상의 변화는 범용 프로세서가 고성능과 저전력을 실현할 수 있도록 애플리케이션 소프트웨어도 멀티프로세싱 패러다임을 도입한 범용 프로세서 엘리멘트를 인식해야 한다는 것이다. MP와 MT는 소프트웨어 개발자에게 이러한 멀티프로세싱의 복잡성을 제기하지만, 두 기술 사이의 비용과 복잡성의 절충관계를 조사해 보면 꽤 상이함을 알 수 있다.프로세싱 특성의 변화(장기)프로세서 기술의 빠른 진보는 반도체 설계자들에게 지속적인 압력을 가하고 있다. 데스크톱 영역에서 프로세서의 진보는 1년 전과 지금의 기술 수준을 비교해 보면 단지 몇 백 MHz의 성능 향상이 있었을 뿐이다.지속적인 성능경쟁 속에서 실리콘 설계자들은 소비자의 수요를 만족시킬 수 있는 유연성과 확장성을 제공하기 위한 차세대 설계용 프로세서 아키텍처에 주목해야 했다. 프로세서 아키텍처의 어떤 근본적인 변화를 가로막는 것은 관련 소프트웨어 기술이다. 현재 투자 규모로는 근본적으로 다른 아키텍처로 이동할 수 없는 상황이다. 컴퓨팅의 역사는 자체의 분명한 계산상의 장점에도 불구하고 분열과 소프트웨어 커뮤니티에 가해지는 요구로 인하여 도입 단계에 이르지도 못한 아키텍처들의 예로 점철돼 있다. 어떤 아키텍처이든 기본적으로 멀티프로세싱을 고려하게 되므로, 어떤 기술이든 기존 소프트웨어 개념에서 제시한 비용과 복잡성에 대비하여 멀티프로세싱을 도입함으로써 이론적으로 가용한 개념과의 절충방법을 찾아야 한다.더욱이 이런 멀티프로세싱 기술은 애플리케이션과 운영체제(OS) 사이에서 다수의 이벤트가 병행하여 일어나는 많은 임베디드 장치에서 더욱 매력적이다. 이러한 소프트웨어 일체성은 MP 혹은 MT(혹은 이 둘의 조합)와 같은 하드웨어 아키텍처의 도입을 촉진하는데 도움이 되며, 지금껏 역사적으로 잘 이루어지지 않았던 소프트웨어 분야에 대한 투자를 가능케 하고 차세대 임베디드 기기에서 요구되는 성능과 효율성을 제공하게 될 것이다.멀티프로세싱과 멀티쓰레딩MP와 MT는 모두 프로세서 성능을 전체적으로 향상시키며, 이로 인해 병행 소프트웨어 쓰레드(concurrent software threads)를 이용하는 애플리케이션의 처리시간을 단축한다. 그러나 이 두 기술은 이러한 목표를 달성하기 위해서 하드웨어적으로 서로 다른 접근방법을 취하고 있으며 특정 소프트웨어 코드의 예에 대해 각기 다른 성취 수준을 나타낸다.일반적으로 MP와 MT가 호환 가능한 기술이며 하드웨어 아키텍처의 멀티프로세싱 특성을 이용하는데 같은 수준의 소프트웨어 복잡성을 요구하는 것으로 잘못 생각하고 있다. 일반적인 멀티프로세싱 프로그램 인터페이스를 살펴보면, 이러한 차이로 인하여 프로그래머는 반드시 멀티프로세싱 솔루션이 MT, MP 혹은 이 둘의 조합으로 이루어져 있는지 완벽하게 이해해야 한다는 것을 보여준다.MT의 기본 개념은 높은 주파수의 프로세서가 저속 메모리와 결합되었을 때, 일반적으로 액세스 지연으로 인한 유니프로세서(uniprocessor) 설계에서 발생하는 비효율적인 사이클을 이용해서 전체적인 프로세서 성능을 높이려 하는 것이다.쓰레드를 여유 사이클에 맞춤으로써 코어의 효율이 향상된다. 그러나 불행히도 역사적으로 이러한 멀티프로세싱에 대한 접근방법의 장점은 명확하지 않았다. 기본적으로 MT는 최소의 프로세서 로직만을 중복시켜서 추가적인 하드웨어 쓰레드를 지원하는 유니프로세서로 분류된다.일반적으로 이것은 프로그래머의 레지스터 집합이며, CPU의 수퍼바이저 상태로 충분하므로 오늘날의 OS가 이 하드웨어 쓰레드를 가상 프로세서로 인식할 수 있다. 이러한 나머지 프로세서 로직을 공유하는 것은 소프트웨어의 복잡성을 증가시키는 중요한 문제다.오늘날의 유니프로세서로 2개의 기존 애플리케이션을 실행하기 위해서 OS는 애플리케이션 간에 초 당 10회에서 100회까지 실행을 전환해서(문맥 전환: context switch) 두 애플리케이션 간에 프로세서 자원을 공유한다. 현재 실행 중인 애플리케이션 역시 현재의 애플리케이션과 다른 애플리케이션을 교체하는데 필요한 프로세서의 레지스터와 메모리에 저장된 실행 상태를 포함한다. 시스템 메모리의 지연으로 인하여 실행이 정지될 때 하드웨어 쓰레드가 전환되는 MT 시스템에서는 문맥 전환이 초 당 수십만 번 일어날 수 있다.이런 엄청난 문맥 전환 횟수는 OS와 MT 하드웨어 설계 간에 신중한 절충을 필요로 한다. 이러한 절충은 실행 상태의 저장과 리로드를 제한하기 위해 중복 하드웨어가 충분하도록 해야 한다. 또한 증가된 스위칭 수준이 프로세서에서 가장 비용이 많이 드는 부분이 되지 않도록 해야 한다. MT 프로세서가 캐시를 사용할 때는 높은 시스템 비용으로 인하여, 각각의 하드웨어 쓰레드마다 거의 중복되지 않는다. 그러므로 소프트웨어 작성자는 문맥 전환의 증가가 애플리케이션에 대한 캐시의 효용성에 상당 부분 영향을 미친다는 것을 인지할 필요가 있다. 이런 간단한 두 개의 독립된 애플리케이션에서, 이것은 MT 머신이 두 개의 애플리케이션을 유니프로세서에서 OS를 단순히 시분할(time sliced) 하는 경우보다 더 느리다는 것을 보여주었다. MT의 장점을 취하려면, 소프트웨어 작성자는 캐시에 저장된 실행 상태가 쓰레드 간에 정확하게 공유되도록 소프트웨어 쓰레드를 표현할 때 매우 조심해야 한다.프로그래머가 공유된 프로세서 자원에 쓰레드의 영향을 관리하는데 필요한 MT 소프트웨어의 복잡성뿐만 아니라 고려해야 할 여러 가지 다른 하드웨어 설계 이슈들이 있다. 하드웨어 쓰레딩을 추가하면 프로세서의 복잡성이 증가하고, 근본적으로 프로세서의 마이크로아키텍처를 변화시키지 않고는 이 설계로 달성할 수 있는 전체 최대 클록 속도에 영향을 미친다. 또한 이렇게 더 복잡해지면 하나의 쓰레드만 실행하더라도 전체적인 소비전력이 증가하게 된다. 이러한 MT의 복잡성은 심지어 단일 애플리케이션이나 쓰레드를 실행시킬 때조차 전체 애플리케이션 성능을 저지시키는 것으로 알려져 있다.이러한 MT에 따른 모든 비용과 그 제한적인 성능 향상을 고려해 보면, 왜 업계에서 듀얼 코어나 멀티 코어를 이용하는 MP 솔루션이 점점 모멘텀을 갖게 되는지 분명해진다.MP는 멀티태스킹 소프트웨어의 실행으로부터 최대의 성능을 달성하기 위해 대개 프로세서의 설계를 중복시키는 설계 원칙을 이용하는 기술이다. MP의 두 번째 목적은 공유 프로세서 자원을 관리하는데 발생하는 MT의 소프트웨어 복잡성에 의한 이용을 줄이는 것이다.사실상 두 개의 독립된 애플리케이션이 지금 동시에 두 개의 독립된 프로세서에서 실행된다고 가정하면, 하나의 프로세서에서 실행시키는 것보다 성능을 두 배 이상 낼 수 있다. 두 애플리케이션 사이의 모든 OS 문맥 전환과 모든 캐시 충돌이 제거되고 각각의 애플리케이션이 최대 속도로 독립적으로 실행될 수 있다.MP에서 분명히 예상할 수 사실은 설계비용이 실리콘 면적만큼 두 배가 된다는 것이며, MT가 멀티프로세싱의 장점을 제공하는 훨씬 더 효율적인 방법이라는 것이다. 하지만 이러한 비교를 위해서는 전체적인 목표 성능을 고려해야 한다. 실리콘 구현 기술 및 cache working set 요건들을 이용하면, 추가적인 MT 소프트웨어 문제를 일으키지 않으면서 동일한 실리콘 면적으로 MT 프로세서와 동일한 성능 수준을 달성하는 MP 프로세서를 제공할 수 있다.다음으로 멀티프로세싱에서 고려해야 할 사항은 소비전력이다. MT는 기본적으로 더 복잡한 유니프로세서로서 클록 게이팅, 대기 모드, 전압 및 주파수 설정 같은 모든 전력관리 요구에 대해 유니프로세서 기법만 사용할 수 있다. 반면, MP 설계에서는 각각의 프로세서가 이러한 유니프로세서 기법을 이용할 수 있으며, 추가로 모든 프로세서를 꺼서 소비전력을 절약할 수 있다. 그럼으로써 MP는 언제나 수행한 작업과 직접적으로 연관된 소프트웨어 및 전력소비로 발휘되는 최대의 성능을 제공할 수 있다.MT는 기본적으로 프로세서의 주파수와 메모리 속도가 불균형적으로 증가할 때의 차이로부터 성능향상을 이끌어내는 기술이다. 이 경우에 MT는 증가하는 비효율을 은폐하는 빠른 교정방법이다. 하지만, 이와 같은 방법은 데스크톱 프로세서 설계에서 경험하였듯이 증가하는 클록 주파수가 MT 기술의 지원 여부에 관계없이 전력소모와 관련된 한계(hard limitation)가 있기 때문에 수명과 적용이 제한된다. 현재 설계자들이 직면한 과제는 MT가 단순히 전체 멀티프로세서를 활용하는 것에 비해 추가적으로 발생하는 소프트웨어 비용을 제한하면서 보다 고속의 유니프로세서에 비해 충분한 성능 향상을 제공하는지를 파악하는 것이다.소프트웨어의 concurrency를 이용할 수 있다면, 직접 유니프로세서에서 확장 가능한 MP 아키텍처로 전환하는 것이 더 효율적인 솔루션이 될 수 있다. MP 설계에서 프로세서 간 통신과 분산 MP 캐시 간의 공유 데이터의 영향을 고려한다면, 유니프로세서에서 멀티쓰레드 소프트웨어를 실행하는 것에 비해 소프트웨어 비용이 거의 추가되지 않는다. 즉, MP는 고도로 효율적인 유니프로세서 설계와 더 우수한 전력효율로 MT의 성능 및 전력소비 수준을 넘어서는 설계를 달성할 수 있다.설계 및 성능의 확장MP는 기본적으로 모듈식 설계 원칙을 이용한 ‘분할 및 정복(divide and conquer)’ 기법을 사용하여 각각이 개별 concurrent 쓰레드를 실행할 수 있는 다중 프로세싱 유닛을 가져와 단일 (멀티)프로세서를 생성한다. 따라서 전체 설계가 MT보다 덜 복잡하고 위험성이 덜하며, 시스템 설계자가 필요에 따라 추가적인 프로세서를 플러그인하기만 하면 된다. 설계의 단순성은 MP가 MT 솔루션보다 확장성이 훨씬 뛰어나게 만든다. MT는 클록 속도를 높이는데 따른 설계 상의 비용이 따르므로 확장성이 제한될 수 있으며, 특히 캐시 실패(cache miss) 정도와 관련된 대가를 고려했을 때 그렇다.추가적인 옵션으로 단일 설계에 MP와 MT를 모두 적용할 수 있다. 그러나 이것은 이미 현재 멀티프로세서 지원 OS 커뮤니티와 소프트웨어 작성자들에 의해 관련 소프트웨어의 복잡성이 크게 간과되었다는 사실이 증명되었다. 이와 같은 설계에서는 프로세서의 공유 자원에 액세스하고 공유하는 것을 주의 깊게 관리하는 소프트웨어를 위한 MT의 조건과 독립된 애플리케이션 태스크를 실행할 때 MP의 최대 효율 간에 기본적으로 상충 요소가 존재한다.고성능 프로세서의 구현을 검토하고 있는 임베디드 시스템 설계자는 하드웨어 아키텍처 뿐 아니라 필요한 소프트웨어 기능성을 구현하는데 따른 복잡성과 관련된 대가를 고려해야 한다. ARM11 MPCore와 같은 멀티프로세서 설계는 MP 아키텍처를 전체적으로 활용할 수 있는 표준 OS에 지원되는 하나의 구성 가능한 마이크로 블록으로 이러한 비용을 줄였다.MT 지원 프로세서의 주요 적용분야는 모든 전형적인 범용 애플리케이션에서 주로 사용되는 어떤 비확정적인 것들이 확실하게 제어되어 모든 공유-리소스들의 부작용이 최소화 되도록 하는 데이터 처리 애플리케이션이다. L1 캐시 메모리와 같은 이러한 애플리케이션은 종종 분할되며 각각의 MT 쓰레드가 캐시의 분할된 데이터를 처리하는 소프트웨어 파이프라인을 생성한다. MT 프로세서가 만드는 문맥 전환의 규칙은 애플리케이션에 의존하며 각기 다른 애플리케이션을 실행할 때는 최소한 OS 스케줄러를 바꾸거나 혹은 최악의 경우 하드웨어를 새로 설계해야 한다.결론항상 소비자의 요구는 시스템이 어떻게 설계되어야 하는지 제시해 왔으며, 그들의 성능 요구는 계속 증가하였고 확장성은 설계자가 무시할 수 없는 화두였다. 시스템 설계자는 또한 어떤 새로운 아키텍처를 개발할 때 미래의 성능 요구를 신중히 고려하여야만 한다.한계를 보여주는 당장의 미봉책과 증가하는 주파수에 초점을 맞춘 결함 있는 솔루션은 그들 범용의 프로세싱과 확장 가능한 성능을 위한 로드맵을 고려했을 때 하나의 부분에 지나지 않는다.만약, 많은 소프트웨어 애플리케이션들이 각각의 솔루션만을 고려하여 설계된다면, 하나의 솔루션이 다른 것보다 좋다고 말하는 것은 현명하지 못하다. 그러나 전통적인 유니프로세서가 소프트웨어 개발자들에게 제공하는 것을 제공하면서도 MP는 훨씬 더 확장 가능한 솔루션이므로, 소프트웨어 설계자가 그들의 개발 전략을 세울 때, 그들의 미래 아키텍처가 언젠가 바뀔 필요가 없다는 편안함을 주는 유연성이라는 장점을 제공한다.
회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지