셀 소프트웨어 개발
Cell software developmentCell 마이크로프로세서를 위한 소프트웨어 개발에는 PowerPC 호환 PPU 코어에 대한 기존 개발 관행과 기능적으로 감소된 SPU 코프로세서와 관련된 새로운 소프트웨어 개발 과제가 혼합되어 있다.
리눅스 온 셀
오픈 소스 소프트웨어 기반 전략은 Cell BE 생태계 개발을 가속화하고 GCC 기반 Cell 컴파일러, 바이너틸, 리눅스 운영체제 항만 등 Cell 애플리케이션을 개발할 환경을 제공하기 위해 채택되었다.[1]
옥터일러
옥터일러는 소프트웨어 개발자들이 Cell 프로세서에 코드를 쓸 수 있도록 하기 위한 IBM의 시제품 컴파일러다.[2][3][4]
소프트웨어 이동성
SPU에 대해 VMX 조정
VMX와 SPU의 차이점
VMX(Vector Multimedia Extensions) 기술은 개념적으로 SPU 프로세서가 제공하는 벡터 모델과 유사하지만 상당한 차이가 있다.
| 특집 기사 | VMX | SPU |
|---|---|---|
| 낱말 크기 | 32비트 | 32비트 |
| 레지스터 수 | 32 | 128 |
| 넓이를 기입하다 | 128비트 쿼드워드 | 128비트 쿼드워드 |
| 정수 형식 | 8, 16, 32 | 8, 16, 32, 64 |
| 포화 지지 | 네 | 아니요. |
| 바이트 순서 지정 | 큰(기본값), 작은 | 거물급 엔디안 |
| 부동 소수점 모드 | 자바, 비 자바 | 단일 정밀도, IEEE 이중 |
| 메모리 정렬 | 사분음표만 | 사분음표만 |
VMX Java 모드는 기본 IEEE 표준의 Java 언어 규격 1 서브셋을 준수하며, Java 표준이 자동으로 적용되는 IEEE 및 C9X 컴플라이언스를 포함하도록 확장된다.일반적인 구현에서 비 자바 모드는 데노멀 값을 0으로 변환하지만 프로세서가 그러한 값을 발견할 때 자바 모드는 에뮬레이터에 트랩된다.
IBM PPE Vector/SIMD 매뉴얼은 IBM이 Cell PPE VMX 기술과 관련된 특정 이중 정밀 성능 번호를 암시하는 자료를 발표했지만 이중 정밀 부동 소수점에 대한 운영을 정의하지 않았다.
본질
Cell용[who?] 컴파일러는 C와 C++의 유용한 SPU 지침을 노출하기 위해 본질적으로 제공한다.피연산자 유형(a, ai, ai, ahi, fa, dfa 등 추가용)에서만 다른 지시사항은 피연산자의 유형에 따라 적절한 지시를 선택하는 단일 C/C++ 내재로 대표된다.
SPU에 대한 VMX 코드 포팅
다른 IBM Power 마이크로프로세서를 위해 개발된 많은 코드의 본문이 있으며, 이 코드는 잠재적으로 SPU에서 실행되도록 조정 및 재컴파일될 수 있다.이 코드 베이스에는 Apple Mac OS X의 PowerPC 버전에서 실행되는 VMX 코드가 포함되어 있으며, 여기서 Altivec로 더 잘 알려져 있다.관련된 VMX 특정 기능의 수에 따라, 관련된 적응은 간단함, 부담스러움, 그리고 완전히 비실용적일 수 있는 범위까지 다양할 수 있다.SPU의 가장 중요한 워크로드는 일반적으로 매우 잘 매핑된다.
경우에 따라 기존 VMX 코드를 직접 포팅할 수 있다.VMX 코드가 매우 일반적이면(실행 환경에 대한 가정은 거의 하지 않음) 변환은 비교적 간단할 수 있다.두 프로세서가 다른 바이너리 코드 형식을 지정하므로 최소한 재컴파일(recompilation)이 필요하다.동일한 동작으로 명령이 존재하는 경우에도 동일한 명령 이름을 가지지 않으므로 이 명령어 또한 매핑되어야 한다.IBM은 개발 툴킷의 일부로 이러한 매핑을 투명하게 관리하는 컴파일러 본질들을 제공한다.
그러나 많은 경우에 직접적으로 동등한 지시는 존재하지 않는다.해결책은 명백할 수도 있고 그렇지 않을 수도 있다.예를 들어, SPU에 포화 동작이 필요한 경우, 이를 달성하기 위해 SPU 지시사항을 추가함으로써(효율성 상실을 일부 포함) 코딩할 수 있다.또 다른 극단에서는, 자바 부동소수점 의미론이 요구되면, SPU 프로세서에서 이것을 달성하는 것은 거의 불가능하다.SPU에서 동일한 계산을 수행하려면 완전히 다른 알고리즘을 처음부터 작성해야 할 수 있다.
VMX와 SPU 아키텍처 간의 가장 중요한 개념적 유사성은 동일한 벡터화 모델을 지원하는 것이다.이러한 이유로 Altivec에 적응한 대부분의 알고리즘은 대개 SPU 아키텍처에도 성공적으로 적응할 것이다.
로컬 저장소 공격
서로 다른 SPU의 로컬 스토어 간 데이터 전송은 큰 성능 비용을 초래할 수 있다.개별 SPU의 로컬 스토어는 다양한 전략을 사용하여 이용할 수 있다.
밀도 매트릭스 계산과 같이 지역성이 높은 애플리케이션은 셀 BE의 로컬 스토어에 이상적인 작업 부하 클래스를 나타낸다.[5]
스트리밍 연산은 멀티 버퍼링 전략을 사용한 메모리 블록 전송의 소프트웨어 파이프라이닝을 사용하여 효율적으로 수용할 수 있다.[1]
소프트웨어 캐시는 무작위 액세스를 위한 솔루션을 제공한다.[6]
보다 정교한 애플리케이션은 다양한 데이터 유형에 대해 다양한 전략을 사용할 수 있다.[7]
참조
- IBM Research의 셀 프로젝트
- CELL 프로세서에 대한 컴파일러 최적화
- 고급 컴파일러 기술을 사용하여 Cell Broadband Engine 아키텍처의 성능 활용
- 확장 가능한 아키텍처를 위한 컴파일러 기술
- ^ a b "An Open Source Environment for Cell Broadband Engine System Software" (PDF). June 2007.
- ^ IBM 연구 프로젝트 - 확장 가능한 아키텍처를 위한 컴파일러 기술
- ^ IBM Systems Journal - Using advanced compiler technology to exploit the performance of the Cell Broadband Engine architecture, 2017-10-23, archived from the original on 2006-04-11
- ^ IBM's Octopiler, or, why the PS3 is running late, ArsTechnica, 2006-02-26
- ^ "Synergistic Processing in Cell's Multicore Architecture" (PDF). March 2006.
- ^ "Using advanced compiler technology to exploit the performance of the Cell Broadband Engine architecture" (PDF). January 2006.
- ^ "Cell GC: Using the Cell Synergistic Processor as a Garbage Collection Coprocessor" (PDF). March 2008.