병렬 아키텍처의 수렴

병렬 기계는 몇 가지 고유 한 아키텍처로 개발되었습니다. 이 섹션에서는 다양한 병렬 컴퓨터 아키텍처와 수렴의 특성에 대해 설명합니다.

통신 아키텍처

병렬 아키텍처는 통신 아키텍처로 컴퓨터 아키텍처의 기존 개념을 향상시킵니다. 컴퓨터 아키텍처는 사용자 시스템 경계 및 하드웨어 소프트웨어 경계와 같은 중요한 추상화와 조직 구조를 정의하는 반면 통신 아키텍처는 기본 통신 및 동기화 작업을 정의합니다. 또한 조직 구조를 다룹니다.

프로그래밍 모델은 최상위 계층입니다. 응용 프로그램은 프로그래밍 모델로 작성됩니다. 병렬 프로그래밍 모델에는 다음이 포함됩니다.

  • 공유 주소 공간
  • 메시지 전달
  • 데이터 병렬 프로그래밍

Shared address프로그래밍은 다른 모든 개인이 공유하는 특정 위치에 정보를 게시하여 한 명 또는 여러 개인과 통신 할 수있는 게시판을 사용하는 것과 같습니다. 개인 활동은 누가 어떤 작업을하고 있는지 확인하여 조정됩니다.

Message passing 특정 수신자가 특정 발신자로부터 정보를받는 전화 또는 편지와 같습니다.

Data parallel프로그래밍은 조직화 된 형태의 협력입니다. 여기에서 여러 개인이 데이터 세트의 개별 요소에 대해 동시에 작업을 수행하고 전 세계적으로 정보를 공유합니다.

공유 메모리

공유 메모리 멀티 프로세서는 병렬 시스템의 가장 중요한 클래스 중 하나입니다. 다중 프로그래밍 워크로드에서 더 나은 처리량을 제공하고 병렬 프로그램을 지원합니다.

이 경우 모든 컴퓨터 시스템은 프로세서와 I / O 컨트롤러 세트가 일부 하드웨어 상호 연결을 통해 메모리 모듈 모음에 액세스 할 수 있도록합니다. 메모리 모듈을 추가하면 메모리 용량이 늘어나고 I / O 컨트롤러에 장치를 추가하거나 I / O 컨트롤러를 추가하면 I / O 용량이 늘어납니다. 더 빠른 프로세서를 사용할 수있을 때까지 기다리거나 더 많은 프로세서를 추가하여 처리 용량을 늘릴 수 있습니다.

모든 리소스는 중앙 메모리 버스를 중심으로 구성됩니다. 버스 액세스 메커니즘을 통해 모든 프로세서는 시스템의 모든 물리적 주소에 액세스 할 수 있습니다. 모든 프로세서가 모든 메모리 위치에서 등거리에 있으므로 모든 프로세서의 액세스 시간 또는 대기 시간이 메모리 위치에서 동일합니다. 이것은 ... 불리운다symmetric multiprocessor.

메시지 전달 아키텍처

메시지 전달 아키텍처는 병렬 시스템의 중요한 클래스이기도합니다. 명시 적 I / O 작업으로 프로세서 간의 통신을 제공합니다. 이 경우 통신은 메모리 시스템이 아닌 I / O 레벨에서 결합됩니다.

메시지 전달 아키텍처에서 실제 통신 작업을 포함하여 많은 하위 수준 작업을 수행하는 운영 체제 또는 라이브러리 호출을 사용하여 실행되는 사용자 통신입니다. 결과적으로 물리적 하드웨어 수준에서 프로그래밍 모델과 통신 작업 사이에 거리가 있습니다.

Sendreceive메시지 전달 시스템에서 가장 일반적인 사용자 수준 통신 작업입니다. Send는 로컬 데이터 버퍼 (전송 될)와 수신 원격 프로세서를 지정합니다. 수신은 전송 된 데이터가 배치 될 전송 프로세스 및 로컬 데이터 버퍼를 지정합니다. 보내기 작업에서identifier 또는 tag 메시지에 첨부되고 수신 작업은 특정 프로세서의 특정 태그 또는 모든 프로세서의 태그와 같은 일치 규칙을 지정합니다.

송신 및 일치 수신의 조합은 메모리 대 메모리 복사를 완료합니다. 각 끝은 로컬 데이터 주소와 쌍별 동기화 이벤트를 지정합니다.

수렴

하드웨어와 소프트웨어의 개발로 인해 공유 메모리와 메시지 전달 캠프 사이의 명확한 경계가 사라졌습니다. 메시지 전달과 공유 주소 공간은 두 가지 프로그래밍 모델을 나타냅니다. 각각은 공유, 동기화 및 커뮤니케이션에 대한 투명한 패러다임을 제공합니다. 그러나 기본 기계 구조는 공통 조직으로 수렴되었습니다.

데이터 병렬 처리

병렬 머신의 또 다른 중요한 클래스는 프로세서 어레이, 데이터 병렬 아키텍처 및 단일 명령어 다중 데이터 머신으로 다양하게 불립니다. 프로그래밍 모델의 주요 기능은 대규모 일반 데이터 구조 (예 : 배열 또는 행렬)의 각 요소에서 병렬로 연산을 실행할 수 있다는 것입니다.

데이터 병렬 프로그래밍 언어는 일반적으로 명시적인 전역 공간을 형성하는 프로세서 당 하나씩 프로세스 그룹의 로컬 주소 공간을 확인하여 적용됩니다. 모든 프로세서가 함께 통신하고 모든 작업에 대한 전역보기가 있으므로 공유 주소 공간 또는 메시지 전달을 사용할 수 있습니다.

기본 설계 문제

프로그래밍 모델의 개발은 컴퓨터의 효율성을 증가시킬 수 없으며 하드웨어 개발만으로는 불가능합니다. 그러나 컴퓨터 아키텍처의 개발은 컴퓨터의 성능에 차이를 만들 수 있습니다. 우리는 프로그램이 기계를 사용하는 방법과 제공되는 기본 기술에 초점을 맞추어 설계 문제를 이해할 수 있습니다.

이 섹션에서는 통신 추상화와 프로그래밍 모델의 기본 요구 사항에 대해 설명합니다.

통신 추상화

통신 추상화는 프로그래밍 모델과 시스템 구현 간의 주요 인터페이스입니다. 동일한 프로그램이 여러 구현에서 올바르게 실행될 수 있도록 플랫폼을 제공하는 명령어 세트와 같습니다. 이 수준의 작업은 간단해야합니다.

통신 추상화는 하드웨어와 소프트웨어 간의 계약과 같으므로 작업에 영향을주지 않고 서로 유연성을 향상시킬 수 있습니다.

프로그래밍 모델 요구 사항

병렬 프로그램에는 데이터에서 작동하는 하나 이상의 스레드가 있습니다. 병렬 프로그래밍 모델은 스레드가 할 수있는 데이터를 정의합니다.name, 어느 operations 명명 된 데이터에 대해 수행 할 수 있으며 작업이 뒤 따르는 순서입니다.

프로그램 간의 종속성이 적용되는지 확인하려면 병렬 프로그램이 해당 스레드의 활동을 조정해야합니다.