컴퓨터에 정렬 네트워크와 같은 특수 하드웨어가 제공되지 않는 이유는 무엇입니까?


10

우리가하는 방식을 프로그래밍하는 대신 "정렬"과 같은 일반적인 작업을 지정한 다음 환경을 컴파일하여 하드웨어를 최대한 활용하도록해야하는 이유는 무엇입니까? 이런 식으로 우리는 정렬 네트워크와 같은 새로운 특수 하드웨어를 컴퓨터에 제공 할 수 있으며 기존 코드와 자동으로 작동합니다.


2
PCI FPGA 보드를 구입하고 원하는 확장 기능을 구현하십시오.
SK-logic

하드웨어는 마술이 아닙니다. 특수 하드웨어로 많은 것을 가속화 할 수 없거나 전혀 할 수 없으며, 기존 하드웨어를 수정하거나 최소한 재 컴파일해야하는 경우가 많습니다. 참조 yosefk.com/blog/its-done-in-hardware-so-its-cheap.html


3
@WorldEngineer 나는 그것이 그림에 들어가는 방법을 보지 못했습니다. 평범한 사용자는 최신 CPU의 80 %가 무엇인지 알지 못합니다. 프로그램을 더 빨리 만든다는 사실에 기뻐합니다. OP가 가정 한대로 정렬이 실제로 일반적이고 전용 하드웨어에 의해 최적화 될 수있는 경우, 분기 예측기 ( "What 's, Gardening?") 옆에 배치하여 애플리케이션 X 및 Y를 5 %로 만들었다는 보도 자료를 발행합니다. 더 빨리 팔아요

1
이는 최고 성능이 아니라 에너지 효율성을 목표로하는 Conservation Cores 라는 아이디어를 떠올리게 합니다.
Paul A. Clayton

답변:


19

우선, 컴퓨터에는 특수 하드웨어가 제공 됩니다. 몇 년 동안 판매 된 모든 랩톱 및 데스크탑 컴퓨터에는 이제 비디오 및 게임 응용 프로그램에 필요한 시각적 처리 알고리즘을 처리하는 특수 보조 프로세서 인 그래픽 처리 장치가 있습니다. 초대형 컴퓨터 ( 예 : "슈퍼 컴퓨터", IBM System Z 제품군)에는 숫자 처리 ( "벡터 처리") 을 처리 할 수있는 다양한 특수 프로세서가 있습니다 .

둘째, 정렬은 컴퓨팅에서 가장 많이 연구 된 측면 중 하나이며, 가장 단순한 경우보다 하드웨어구축하기에는 너무 복잡합니다 . 정렬은 속도와 정확성에 관한 것입니다. 속도는 알고리즘의 선택, 데이터의 유형 및 변형 및 데이터 볼륨에 따라 다릅니다. 정확성은 데이터의 유형과 컨텍스트에 따라 다릅니다. CPU의 기본 단어 크기에 맞는 중간 크기의 정수 배열을 정렬하는 것은 매우 간단합니다 ( 예 :, 31 또는 63 비트 더하기 부호). 단순한 ASCII 값 이상을 포함하는 문자열 정렬은 매우 복잡합니다. IBM은 20 년 전에 국가 경계 및 일반적인 사용의 맥락에서 문자 세트 문제를 논의하는 500 개 이상의 페이지를 발행했습니다. 그리고 연속되지 않은 데이터에 대한 문제가 있습니다. 연결된 목록을 정렬하려면 메모리 전체에서 포인터를 쫓는 것이 필요합니다.


10

주요 문제는 정렬 알고리즘 (1) 많은 유연성이 필요하며 (2) 어쨌든 하드웨어를 사용하여 가속하는 것이 매우 어렵다는 것입니다.

한 가지 점은 정렬 알고리즘이 프로세서의 메모리 대역폭을 초과하기에 이미 충분히 빠르다는 것입니다. 프로세서는 이미 데이터가 메인 메모리로 앞뒤로 이동할 때까지 많은 시간을 소비합니다. 하드웨어 가속 정렬 보조 프로세서 또는 특수 정렬 명령도 같은 문제가 있습니다.

이 메모리 대역폭이 해결되는 방식은 더 나은 "로컬 리티"를 가진 더 나은 알고리즘과 데이터 구조를 사용하는 것이며,이 분야에서 여전히 중요한 작업이 있습니다. 특히 "캐시 모르는 알고리즘을 캐시합니다" 캐싱의 세부 사항에 관계없이 "캐시 인식"알고리즘은 특정 캐시 페이지 크기 등에 맞게 조정됩니다.

반대로 미디어 응용 프로그램 (오디오 및 그래픽, 특히 3D 그래픽)은 매우 반복적 인 구조를 사용합니다. 물론 유연성은 있지만, 크고 구조가 잘 잡힌 기초 위에 구축되었습니다. 이를 통해 Blitting (구성 가능하지만 여전히 구조화 된 블록 복사 작업) 및 선 / 다각형 그리기와 같은 그래픽 가속을 간단하게 시작할 수있었습니다. 그래픽과 사운드 처리가 더욱 정교 해짐에 따라 벡터 작업은 최적화의 목표가되었습니다. 먼저 MMX (정수 벡터)와 SSE (수레 벡터)입니다. 이는 기존의 고정 기능 3D 그래픽 파이프 라인을 3D 그래픽 하드웨어로 옮길 때 3D 그래픽 엔진이 작동하는 방식에 대해 잘 정의 된 구조가 있음을 의미했습니다.

그러나 3D 그래픽의 경우 하드웨어에서 한 번 수행 된 작업은 이제 유연성을 위해 소프트웨어에서 수행됩니다. 예를 들어 쉐이더는 소프트웨어입니다. 예를 들어, 다양한 재질의 모양을 제공하는 방대한 범위의 다양한 쉐이더를 얻는 방법입니다. 그러나 해당 소프트웨어는 여전히 일반 소프트웨어보다 훨씬 구조적으로 작동하므로 훨씬 더 전문화 된 하드웨어 플랫폼을 계속 사용할 수 있습니다. 그렇기 때문에 그래픽 카드가 물리학에서 암호 해독에 이르기까지 모든 것을 가속화 할 수 있습니다. 동일한 모델에도 적합하고 최신 그래픽 프로세서가 제공하는 명령 세트를 사용하여 효율적으로 구현할 수있는 응용 프로그램입니다.

그래픽 프로세서는 이제 디지털 신호 프로세서의 영적 또는 실제 자손이며, 디지털 신호 (예 : 오디오)를 처리하기위한 일종의 특수 프로세서 일 수도 있습니다.

마지막 포인트-정렬 알고리즘 하드웨어에 의해 가속화 될 있습니다. 데이터에 따라 프로세서의 MMX 또는 SSE (Single-Instruction-Multiple-Data) 명령어를 사용하여 정렬을 처리 할 수 ​​있지만 메모리 대역폭 문제로 인해 별다른 의미가 없을 수 있습니다. 그래도 그래. 그러나 그래픽 하드웨어를 사용할 수도 있습니다. 이렇게하면 그래픽 카드에 대해 훨씬 더 나은 메모리 대역폭을 활용할 수 있습니다. 이런 식으로 모든 종류를 교체 할 수는 없지만, 가능하면 가능할 것입니다.

IOW는 다양한 경제 및 실제 문제로 인해 분류와 같이 비교적 좁은 작업을 가속화하도록 특별히 하드웨어를 설계 하는 것은 실제로 의미가 없습니다. 더 넓은 범위의 작업을 가속화하거나 더 넓은 범위의 작업에 기존 가속 하드웨어를 적용 할 수있는 기능이 훨씬 더 합리적입니다.


3

그러나 그들은한다! 이를 명령어 세트 확장이라고합니다. (SSE 등의 스터프)

특정 작업은 소프트웨어에서 매우 훌륭하게 구현됩니다. 일반적으로 이러한 구현은 작업을 수행하기에 충분하므로 특수한 하드웨어가 필요하지 않습니다. 특정 종류의 특수 하드웨어를 만들려면 그 가치를 높이기 위해 매우 다양한 응용 프로그램이 필요합니다.

이 작업을 수행 할 수있는 하드웨어를 살펴보면 FPGA와 같은 것을보고있을 것입니다. FPGA에서 볼 수 있듯이 칩은 훨씬 비싸지 만 많은 응용 프로그램에는 적용되지 않습니다.


SSE를 위해 Google을 사용해야하지만 사전에 정렬이 보편적 일 수 있습니다. 하드웨어 수준에서 구현됩니까?
MaiaVictor

또한, 우리가있는 것처럼 책을 추천 하시겠습니까?
MaiaVictor

정렬 네트워크가 예로 사용되기 때문에 일반적으로 CPU 스타일 프로세서에서 구현되는 작업 별 최적화에 대해 이야기했습니다. SSE 또는 다른 명령어 세트에 정렬 특정 최적화가 포함되어 있는지 모르겠습니다. Google 정렬 네트워크를 사용했으며 최적화 된 일반 구현이 있기 때문에 구현이 올바르게 수행되면 소프트웨어 구현으로도 작업을 수행 할 수 있다고 생각합니다.
Onno

대부분의 명령어 세트 확장은 예를 들어 사용했던 정렬 네트워크보다 낮은 수준에서 작동한다는 점을 지적해야하지만이 방법으로 정렬 할 수있는 다중 레지스터 최적화를 고안하는 것은 불가능하지 않습니다. 그러나 CPU 제조업체의 질문은 "비용을 정당화하기에 충분한 비용을 지불 할 것인가?"입니다.
Onno
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.