맨위로가기

SIMD

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

SIMD(Single Instruction, Multiple Data)는 단일 명령으로 여러 데이터를 처리하는 병렬 처리 기술이다. 1966년 ILLIAC IV에서 처음 사용되었으며, 1990년대 개인용 컴퓨터에 도입되어 멀티미디어 처리 성능 향상에 기여했다. SIMD는 이미지 처리, 오디오 DSP 등에서 활용되며, 여러 값을 한 번에 처리하고 단일 연산으로 모든 데이터를 동시에 처리하는 장점을 제공한다. 하지만 모든 알고리즘에 적용하기 어렵고, 프로그래밍 노력이 필요하며, 하드웨어 제약 및 아키텍처 종속성 등의 단점도 존재한다. 최근에는 GPU와 같은 하드웨어에서 SIMD가 널리 사용되고 있으며, 소프트웨어 측면에서는 컴파일러 지원 및 다양한 프로그래밍 언어에서 SIMD를 활용할 수 있는 기능이 제공되고 있다.

더 읽어볼만한 페이지

  • 플린 분류 - MIMD
    MIMD는 여러 프로세서가 각기 다른 명령어와 데이터를 처리하는 병렬 컴퓨팅 구조로, 공유 메모리 및 분산 메모리 모델로 나뉘며, 높은 병렬성을 요구하는 다양한 분야에 활용되지만 프로그래밍 복잡성 등의 과제를 안고 있다.
  • 플린 분류 - 폰 노이만 구조
    폰 노이만 구조는 CPU, 주소 지정 메모리, 버스를 핵심 요소로 하는 컴퓨터 아키텍처로, 프로그램 내장 방식을 통해 명령어와 데이터를 동일한 기억 장치에 저장하고 순차적으로 실행하는 특징을 가진다.
  • SIMD 컴퓨팅 - SSE2
    SSE2는 인텔이 개발한 x86 아키텍처의 SIMD 명령어 집합 확장으로, MMX 명령어의 정수 벡터 연산을 확장하고 XMM 레지스터를 사용하여 부동 소수점 연산 성능을 향상시키며, AMD64 아키텍처에서도 지원된다.
  • SIMD 컴퓨팅 - SSE3
    SSE3는 인텔에서 개발한 스트리밍 SIMD 확장 3 명령어 세트로, 부동 소수점 연산, 디지털 신호 처리, 3차원 컴퓨터 그래픽 처리 성능 향상을 위해 기존 SSE2 명령어 세트에 몇 가지 새로운 명령어를 추가한 것이다.
  • 디지털 신호 처리 - 라플라스 변환
    라플라스 변환은 함수 f(t)를 복소수 s를 사용하여 적분을 통해 다른 함수 F(s)로 변환하는 적분 변환이며, 선형성을 가지고 미분방정식 풀이 등 공학 분야에서 널리 사용된다.
  • 디지털 신호 처리 - 디랙 델타 함수
    디랙 델타 함수는 원점에서 무한대 값을 갖고 그 외 지점에서 0의 값을 갖는 수학적 개념으로, 분포 또는 측도로 정의되며, 순간적인 충격이나 점 형태 현상 모델링에 활용되고 푸리에 변환, 스케일링, 평행 이동 등의 성질을 가진다.
SIMD
병렬 처리 방식
종류병렬 컴퓨팅
상세 정보
명칭단일 명령어 다중 데이터
영어 명칭Single Instruction, Multiple Data (SIMD)
특징하나의 명령어로 여러 데이터에 대해 동시에 연산 수행
벡터 프로세서에서 주로 사용
활용 분야그래픽 처리
신호 처리
과학 기술 연산
장점연산 속도 향상
전력 효율 증가
단점특정 연산에만 적용 가능
프로그램 복잡도 증가

2. 역사

SIMD 명령어는 1966년 ILLIAC IV에서 처음 사용되었다.[1] 1970년대 초 CDC Star-100, 텍사스 인스트루먼츠 ASC 등 벡터 슈퍼컴퓨터에서 사용되었다.[1] 1970년대와 1980년대에 크레이(Cray)에 의해 벡터 처리가 대중화되었다.[1]

1990년대에 데스크톱 프로세서가 발전하면서 SIMD 기술이 개인용 컴퓨터에 도입되기 시작했다.[2] 1994년 휴렛 팩커드PA-RISC 1.1 데스크톱에 MAX 명령어를 도입했고,[3] 1995년 선 마이크로시스템즈는 UltraSPARC I 마이크로프로세서에 "VIS" 명령어 세트를 도입했다.[2] 1996년 인텔은 x86 아키텍처에 MMX 명령어 집합을 도입하여 데스크톱 SIMD 시대를 열었다.[2] 1999년 인텔은 SSE를 도입했다.[2] 이후, 인텔과 AMD는 AVX, AVX2, AVX-512 등 SIMD 명령어 세트를 지속적으로 확장해왔다.[4]

3. 장점

SIMD는 동일한 연산을 여러 데이터에 동시에 적용하여 처리 속도를 높인다.[1] 멀티미디어 처리, 3D 그래픽, 과학 계산 등 대규모 데이터 처리에 효과적이다.[1] 전력 효율성이 높아 모바일 기기 및 임베디드 시스템에 적합하며, 낮은 클럭 주파수에서도 높은 성능을 낼 수 있다.[1]

SIMD 프로세서는 데이터를 블록 단위로 처리하여 여러 값을 한 번에 불러올 수 있다.[1] 예를 들어, "n개의 픽셀을 가져오세요"와 같은 단일 명령을 사용하여, 각 픽셀을 개별적으로 가져오는 것보다 시간을 절약할 수 있다.[1] 또한, 이 명령은 로드된 모든 데이터에 단일 연산으로 적용되므로, 여러 개의 값을 동시에 처리할 수 있다.[1] 이러한 병렬성은 슈퍼스칼라 프로세서의 병렬성과는 별개이며, 슈퍼스칼라가 아닌 프로세서에서도 여러 값을 병렬로 처리할 수 있게 해준다.[1]

예를 들어, 이미지의 밝기를 변경하는 경우, 각 픽셀의 빨간색(R), 녹색(G), 파란색(B) 값에 동일한 값을 더하거나 빼는 연산을 SIMD를 통해 동시에 처리할 수 있다.[1] 오디오 DSP에서 볼륨 조절을 위해 좌우 채널을 동시에 곱하는 연산에도 SIMD가 활용된다.[1]

4차원 벡터 덧셈을 예로 들면, 각 성분(X, Y, Z, W)별로 덧셈을 순차적으로 실행하는 대신, SIMD를 사용하면 1개의 명령으로 모든 성분을 한 번에 연산할 수 있다.[1] 128비트 레지스터 폭을 가진 프로세서의 경우, 32비트 데이터 4세트를 동시에 처리하여 이론상 처리 시간을 1/4로 줄일 수 있다.[1]

일반적으로 128비트는 2분할(64비트 × 2), 4분할(32비트 × 4), 8분할(16비트 × 8), 16분할(8비트 × 16) 등으로 사용되며, 각각 1회의 사이클로 2배, 4배, 8배, 16배의 데이터 처리가 가능해진다.[1] 이를 통해 상대적으로 낮은 클럭 주파수에서도 높은 성능을 달성하기 쉽다.[1]

음성 데이터 전체의 음량을 두 배로 높이는 경우처럼, 대량의 데이터에 동일한 처리를 적용할 때 SIMD는 성능 향상을 가져온다.[1] 따라서 SIMD는 멀티미디어 처리에 적합하다고 여겨진다.[1]

SIMD 방식은 ILLIAC IV와 같은 초기 컴퓨터에서 시도되었으며, 1990년대 후반부터 개인용 컴퓨터의 CPU/GPU, 게임기 등에도 응용되었다.[1]

하지만, 프로세서의 명령 구현 형태에 따라 SIMD 명령을 사용해도 연산 성능이 향상되지 않을 수 있다.[1] 예를 들어, 256비트 SIMD 명령을 지원하는 프로세서라도 128비트 연산기를 사용하여 2사이클로 실행하는 구현일 수 있다.[1] 또한, 모든 처리를 SIMD로 수행할 수 있는 것은 아니며, 정수 스칼라 연산이나 논리 연산 등은 일반적인 ALU를 사용하는 경우가 많다.[1]

4. 단점


  • 모든 알고리즘을 SIMD 방식으로 쉽게 구현할 수 있는 것은 아니다. 예를 들어, 코드 파싱과 같이 흐름 제어가 많은 작업은 SIMD의 이점을 얻기 어렵다.[5]
  • 대형 레지스터 파일을 필요로 하므로 전력 소비가 증가하고 칩 면적이 커진다.[5]
  • 현재 SIMD 명령어를 사용하여 알고리즘을 구현하려면 일반적으로 프로그래밍 노력이 필요하다. 예를 들어, 대부분의 컴파일러는 일반적인 C 프로그램에서 SIMD 명령어를 생성하지 않는다. 컴파일러의 자동 벡터화는 컴퓨터 과학 연구의 활발한 분야이다. (벡터 프로세서와 비교).[5]
  • 특정 SIMD 명령어 집합으로 프로그래밍하는 것은 여러 저수준 문제를 포함할 수 있다.[5]
  • 데이터 구조 정렬에 제한이 있을 수 있다.
  • 데이터를 SIMD 레지스터로 모으고 올바른 대상 위치로 분산시키는 것은 까다로울 수 있다.
  • 회전 또는 3개 피연산자 덧셈과 같은 특정 명령어는 일부 SIMD 명령어 집합에서 사용할 수 없다.
  • 명령어 집합은 아키텍처별로 다르다. 일부 프로세서에는 SIMD 명령어가 전혀 없을 수도 있다.
  • 서로 다른 아키텍처는 서로 다른 레지스터 크기 및 명령어 집합을 제공한다.
  • 초기 MMX 명령어 집합은 부동 소수점 스택과 레지스터 파일을 공유하여, 부동 소수점 코드와 MMX 코드를 혼합할 때 비효율성을 초래했다. 하지만 SSE2가 이를 수정했다.[5]

5. 하드웨어

소규모(64 또는 128비트) SIMD는 1990년대 초반부터 범용 CPU에 널리 채택되었다. 1997년 알파용 MVI(Motion Video Instructions)를 시작으로, 다양한 CPU에서 SIMD 명령어가 사용되기 시작했다. 주요 SIMD 명령어 세트는 다음과 같다.


  • x86의 MMX, 3DNow!, SSE
  • x64의 Advanced Vector Extensions (AVX), Advanced Matrix Extensions (AMX)
  • ARM의 Advanced SIMD (NEON)[33], Scalable Vector Extension (SVE)[34], SVE2[35], Scalable Matrix Extension (SME)
  • RISC-V의 벡터 확장(Vector Extension)[36]
  • PowerPC의 AltiVec (VMX)
  • SPARC의 VIS (:en:Visual Instruction Set)
  • MIPS의 MIPS-3D (:en:MIPS-3D), MDMX (:en:MDMX)
  • PA-RISC의 MAX (:en:Multimedia Acceleration eXtensions)
  • Emotion Engine의 CPU 코어


Cell 프로세서의 SPU 명령어 집합도 SIMD를 기반으로 한다. 필립스 (현재 NXP)는 Xetal이라는 여러 SIMD 프로세서를 개발했는데, 이는 비전 작업용으로 특별히 설계된 320개의 16비트 프로세서 요소를 가지고 있다. 인텔AVX-512 SIMD 명령어는 한 번에 512비트의 데이터를 처리한다.

GPU는 대부분 SIMD 구조를 기반으로 한다. 그러나 GPGPU가 발전하면서, SIMD뿐만 아니라 여러 프로세서를 활용하여 여러 데이터를 동시에 처리하는 Single instruction, multiple threads|SIMT영어 방식도 함께 사용되고 있다.

최근에는 CPU와 GPU 외에도 SIMD 기반 가속기가 등장하고 있다. 예를 들면 다음과 같다.

  • PCI Express 연결 범용 SIMD 가속기:
  • CSX600 - 클리어스피드의 메니코어 SIMD 연산 유닛
  • SX-Aurora TSUBASA Vector Engine - NEC의 슈퍼컴퓨터 SX-Aurora TSUBASA에 탑재된 연산 유닛

6. 소프트웨어

SIMD 명령어는 3D 그래픽 처리, 데이터 처리, 암호화 등에 널리 사용된다.[6][7][8] 특히, GPU에서의 범용 컴퓨팅(GPGPU) 추세는 향후 SIMD의 더 광범위한 사용으로 이어질 수 있다.

4개의 8비트 숫자를 SIMD 방식으로 3배로 만드는 과정. CPU는 4개의 숫자를 한 번에 로드하고, 하나의 SIMD 곱셈으로 모두 곱한 다음, 한 번에 모두 RAM에 다시 저장한다. 이론적으로 속도는 4배로 증가할 수 있다.


초기에는 개인용 컴퓨터 소프트웨어에서 SIMD 시스템 채택이 느렸지만, AMD의 3DNow!와 인텔SSE 도입 이후 시스템이 안정되면서 SIMD 지원 소프트웨어가 늘어났다.

SIMD 프로그래밍을 위한 방법은 다음과 같다:

  • 내장 함수(intrinsic functions): 각 프로세서의 고유 명령어를 어셈블러로 직접 기술하는 대신, 고급 언어의 컴파일러에 구현된 내장 함수를 이용한다.
  • 자동 벡터화: 컴파일러 최적화의 일종으로, 특정 패턴에 일치하는 처리를 SIMD 명령어를 사용한 벡터 연산으로 대체하여 고속화한다.[40][41][42]
  • OpenMP 활용: OpenMP 4.0부터 SIMD 벡터화를 위한 플러그마 지시어가 도입되었다.[43]
  • 프로그래밍 언어 지원:
  • Java는 HotSpot C2 Compiler를 통해 자동 벡터화를 지원하며, Java 16 이후 Vector API를 제공한다.[44][45][46][47][48]
  • .NET은 RyuJIT 실행 시 컴파일러를 통해 SIMD 지원형을 사용한 코드를 SIMD 명령어로 병렬화된 네이티브 코드로 컴파일한다.[49]
  • WebAssembly는 128비트 SIMD 명령어를 지원하며, 여러 브라우저에서 구현되어 있다.[50]


SIMD 멀티 버전 관리는 소비자 소프트웨어가 여러 세대의 CPU에서 작동하도록 하기 위해 사용되며, 다음과 같은 방법이 있다:

  • 함수 다중 버전 관리(FMV): 프로그램 또는 라이브러리의 서브루틴을 복제하여 여러 명령어 집합 확장에 대해 컴파일하고, 런타임에 사용할 버전을 결정한다.
  • 라이브러리 다중 버전 관리(LMV): 전체 프로그래밍 라이브러리를 복제하여 여러 명령어 집합 확장에 대해 컴파일하고, 운영 체제 또는 프로그램이 런타임에 로드할 버전을 결정한다.

7. 웹에서의 SIMD

2013년, 존 맥커찬은 Dart 프로그래밍 언어용 SIMD 명령 집합에 대한 고성능 인터페이스를 개발하여, 웹 프로그램에 처음으로 SIMD의 이점을 제공한다고 발표했다. 이 인터페이스는 다음 두 가지 유형으로 구성된다.[22]


  • Float32x4, 4개의 단정밀도 부동 소수점 값.
  • Int32x4, 4개의 32비트 정수 값.


이러한 유형의 인스턴스는 변경 불가능하며, 최적화된 코드에서는 SIMD 레지스터에 직접 매핑된다. Dart로 표현된 연산은 일반적으로 오버헤드 없이 단일 명령어로 컴파일된다. 이는 C 및 C++ 내장 함수와 유사하다. 4×4 행렬 곱셈, 3D 정점 변환, 만델브로 집합 시각화에 대한 벤치마크는 Dart로 작성된 스칼라 코드에 비해 약 400%의 속도 향상을 보여준다.

맥커찬의 Dart 작업은 현재 SIMD.js라고 불리며, ECMAScript에 채택되었고, 인텔은 IDF 2013에서 V8과 SpiderMonkey 모두에 대해 맥커찬의 사양을 구현하고 있다고 발표했다.[23] 그러나 2017년까지, SIMD.js는 WebAssembly에서 유사한 인터페이스를 추진하기 위해 ECMAScript 표준 대기열에서 제외되었다.[24] 2020년 8월 현재, WebAssembly 인터페이스는 아직 완성되지 않았지만, 해당 인터페이스의 이식 가능한 128비트 SIMD 기능은 이미 많은 엔진에서 사용되고 있다.

Mozilla의 C/C++-to-JavaScript 컴파일러인 Emscripten은 확장을 통해 SIMD 내장 함수 또는 GCC 스타일 벡터 코드를 JavaScript의 SIMD API로 컴파일할 수 있으며, 스칼라 코드에 비해 동등한 속도 향상을 얻을 수 있다.[25] 또한 WebAssembly 128비트 SIMD 제안을 지원하며 (현재 선호함) 있다.[26]

8. 상업적 응용

SIMD 프로세서는 1998년 이후 거의 모든 최신 비디오 게임 콘솔의 아키텍처에 통합되어 널리 사용된다.[27] 플레이스테이션 2는 벡터 부동 소수점 장치 중 하나가 자체 명령 스트림을 실행하는 자율 DSP로 작동하거나, 일반 CPU 명령에 의해 구동되는 보조 프로세서로 작동할 수 있다는 점에서 특이했다. 3D 그래픽 응용 프로그램은 4차원 벡터 연산에 크게 의존하므로 SIMD 처리에 적합하다. 마이크로소프트(Microsoft)의 Direct3D 9.0은 런타임에 SIMD 지원 명령을 포함한 자체 수학 연산의 프로세서별 구현을 선택한다.

플레이스테이션 3에 사용된 셀 프로세서(Cell Processor)는 IBM도시바(Toshiba) 및 소니(Sony)와 협력하여 개발한 프로세서이다. 이 프로세서는 여러 개의 SIMD 프로세서(NUMA 아키텍처, 각 프로세서에는 독립적인 로컬 스토어가 있으며 범용 CPU로 제어됨)를 사용하며, 3D 및 비디오 처리 응용 프로그램에서 필요한 방대한 데이터 세트를 처리하도록 설계되었다. 전통적인 ISA와 달리 별도의 스칼라 레지스터 없이 처음부터 SIMD를 사용한다는 점이 다르다.

Ziilabs는 미디어 플레이어 및 휴대폰과 같은 모바일 장치에서 사용할 SIMD 유형 프로세서를 생산했다.[27]

GAPP는 록히드 마틴(Lockheed Martin)에서 개발하여 자회사인 테라넥스(Teranex)가 상업 부문으로 가져갔다. GAPP의 최근 구현은 다양한 비디오 표준과 프레임 속도 간의 변환(NTSC에서/로 PAL, NTSC에서/로 HDTV 형식 등), 디인터레이싱, 이미지 노이즈 감소, 적응형 비디오 압축, 이미지 향상과 같은 실시간 비디오 처리 응용 분야에서 강력한 도구가 되었다.

대규모 상업용 SIMD 프로세서는 ClearSpeed Technology, Ltd. 및 Stream Processors, Inc.에서 사용할 수 있다. ClearSpeed의 CSX600(2004)은 각각 두 개의 배정밀도 부동 소수점 장치를 가진 96개의 코어를 가지고 있으며 CSX700(2008)은 192개의 코어를 가지고 있다. Stream Processors는 컴퓨터 설계자 빌 댈리(Bill Dally)가 이끌고 있다. 그들의 Storm-1 프로세서(2007)에는 MIPS CPU로 제어되는 80개의 SIMD 코어가 포함되어 있다.

PCI Express 연결의 범용 SIMD 가속기는 다음과 같다.

제품명제조사코어 수최대 성능비고
CSX600클리어스피드96워크스테이션, 슈퍼컴퓨터 등에 탑재
SX-Aurora TSUBASA Vector EngineNEC82.45TFLOPS[39]슈퍼컴퓨터 SX-Aurora TSUBASA에 탑재된 연산 유닛을 개별 판매. 배정밀도 행렬 연산을 고속으로 수행.


9. 컴파일러 지원

C/C++(C++) 컴파일러는 각 프로세서 고유의 SIMD 명령어를 위한 내장 함수(intrinsic function)를 제공한다. 이러한 내장 함수를 사용하면 어셈블러를 직접 사용하지 않고도 SIMD 명령어를 활용할 수 있다. 하지만, SIMD 명령어 집합과 내장 함수는 프로세서마다 다르기 때문에, 수동으로 벡터화하면 소스 코드의 이식성이 떨어지고 유지보수성이 저하되는 문제가 발생한다.[40][41][42]

일부 컴파일러는 SIMD 명령어를 사용한 자동 벡터화를 지원한다. 자동 벡터화는 컴파일러 최적화의 한 종류로, 특정 패턴에 맞는 처리를 SIMD 명령어를 사용하는 벡터 연산으로 자동 변환하여 속도를 높인다. 자동 벡터화는 수동 벡터화보다 세밀한 제어가 어렵고, 컴파일러의 분석 능력에 따라 성능 향상 정도가 달라지지만, 소스 코드의 이식성과 유지보수성을 유지하면서 고속화할 수 있다는 장점이 있다. Clang/LLVM과 같은 일부 컴파일러는 벡터 폭 등을 지정하는 플래그마 지시어를 통해 컴파일러 최적화를 지원한다.

OpenMP 4.0부터는 SIMD 벡터화를 위한 플래그마 지시어가 도입되었다.[43]

Java의 경우, HotSpot Server VM용 HotSpot C2 Compiler가 x86/x64/AArch64의 자동 벡터화를 지원한다.[44][45] Java 16 이후에는 실험적 기능 모듈(incubator module)인 `jdk.incubator.vector`의 초기 버전으로 Vector API가 추가되었으며[46][47], 버전 업데이트마다 기능이 추가되고 있다.[48]

.NET 및 .NET Framework 4.6 이후의 64비트 실행 시 컴파일러(RyuJIT)는 `System.Numerics` 네임스페이스에 포함된 SIMD 지원형을 사용하여 작성된 관리 코드를 SIMD 명령어로 병렬화된 네이티브 기계어 코드로 JIT 컴파일할 수 있다.[49]

WebAssembly는 128비트 SIMD 명령어를 지원하며, Chrome 91, Firefox 89, Safari 16.4 등에서 구현되어 있다.[50]

10. 비트 연산

비트 연산은 여러 비트를 동시에 처리하는 병렬성을 가지므로 넓은 의미에서 SIMD로 볼 수 있으며, 병렬 계산에 이용되기도 한다.

참조

[1] 웹사이트 MIMD1 - XP/S, CM-5 http://www.cs.kent.e[...]
[2] 간행물 The long and winding road to high-performance image processing with MMX/SSE
[3] 서적 digest of papers Compcon '95. Technologies for the Information Superhighway
[4] 웹사이트 AMD Zen 4 AVX-512 Performance Analysis On The Ryzen 9 7950X Review https://www.phoronix[...] 2023-07-13
[5] 웹사이트 SIMD Instructions Considered Harmful https://www.sigarch.[...] 2017-09-18
[6] 문서 RE: SSE2 speed http://marc.info/?l=[...]
[7] 문서 Salsa20 speed; Salsa20 software http://cr.yp.to/snuf[...]
[8] 문서 up to 1.4x RSA throughput using SSE2 http://markmail.org/[...]
[9] 웹사이트 SIMD library math functions https://stackoverflo[...] 2020-01-16
[10] 웹사이트 Vector Extensions https://gcc.gnu.org/[...] 2020-01-16
[11] 웹사이트 Clang Language Extensions https://clang.llvm.o[...] 2020-01-16
[12] 웹사이트 VcDevel/std-simd https://github.com/V[...] VcDevel 2020-08-06
[13] 웹사이트 RyuJIT: The next-generation JIT compiler for .NET https://devblogs.mic[...] 2013-09-30
[14] 웹사이트 The JIT finally proposed. JIT and SIMD are getting married https://devblogs.mic[...] 2014-04-07
[15] 웹사이트 JEP 338: Vector API https://openjdk.java[...]
[16] 웹사이트 SIMD Directives https://www.openmp.o[...]
[17] 웹사이트 Tutorial pragma simd https://www.cilkplus[...] 2012-07-18
[18] 웹사이트 OMP5.1: Loop Transformations https://www.openmp.o[...]
[19] 웹사이트 Function multi-versioning in GCC 6 https://lwn.net/Arti[...]
[20] 웹사이트 2045-target-feature https://rust-lang.gi[...]
[21] 웹사이트 Transparent use of library packages optimized for Intel® architecture https://clearlinux.o[...] 2019-09-08
[22] 웹사이트 Bringing SIMD to the web via Dart https://www.dartlang[...]
[23] 웹사이트 SIMD in JavaScript https://01.org/node/[...] 2014-05-08
[24] 웹사이트 tc39/ecmascript_simd: SIMD numeric type for EcmaScript. https://github.com/t[...] Ecma TC39 2019-08-22
[25] 웹사이트 SIMD in JavaScript via C++ and Emscripten https://docs.google.[...]
[26] 웹사이트 Porting SIMD code targeting WebAssembly https://emscripten.o[...]
[27] 웹사이트 ZiiLABS ZMS-05 ARM 9 Media Processor https://secure.ziila[...] 2010-05-24
[28] 문서 SIMD - MDN Web Docs Glossary: Definitions of Web-related terms https://developer.mo[...]
[29] 서적 Computer Architecture and Organization McGRAW-HILL INTERNATIONAL BOOK COMPANY
[30] 문서 "6 群「コンピュータ - 基礎理論とハードウェア」 - 5 編「コンピュータアーキテクチャ(II) 先進的」 - 4 章「ベクトルコンピュータ」 | 電子情報通信学会「知識ベース」" http://www.ieice-hbk[...]
[31] 서적 Computer Organization and Design: The Hardware/Software Interface Morgan Kaufmann Publishers
[32] 문서 SIMD(Single Instruction/Multiple Data)とは - IT用語辞典 e-Words http://e-words.jp/w/[...]
[33] 문서 Arm C Language Extensions Release ACLE Q4 2019 - Advanced SIMD (Neon) intrinsics | Arm Developer https://developer.ar[...]
[34] 문서 Scalable Vector Extension (SVE) | Arm Developer https://developer.ar[...]
[35] 웹사이트 Arm、10年ぶりの新アーキテクチャ「Armv9」。富岳のSVE改良版やコンフィデンシャルコンピューティング機能追加 https://pc.watch.imp[...] 株式会社インプレス 2021-03-31
[36] 웹사이트 riscv-v-spec/v-spec.adoc at master · riscv/riscv-v-spec https://github.com/r[...] 2024-06-21
[37] 뉴스 【後藤弘茂のWeekly海外ニュース】NVIDIA次世代SoC「Xavier」は進化版DenverとVoltaを搭載 - PC Watch https://pc.watch.imp[...]
[38] 웹사이트 【後藤弘茂のWeekly海外ニュース】 スマートフォンのグラフィックスを加速する「PowerVR Series6 Rogue」 https://pc.watch.imp[...] 株式会社インプレス 2021-12-29
[39] 뉴스 NEC SX-Aurora TSUBASA Vector Engineの取り扱いを開始 https://prtimes.jp/m[...]
[40] 문서 Auto-Vectorizer in Visual Studio 2012 – Overview – Parallel Programming in Native Code https://blogs.msdn.m[...]
[41] 문서 インテル® C++ コンパイラーのベクトル化ガイド - Compiler_AutoVectorization_Guide.pdf https://jp.xlsoft.co[...]
[42] 문서 Auto-Vectorization in LLVM — LLVM git documentation https://llvm.org/doc[...]
[43] 문서 OpenMP 4.0 を使用してプログラムで SIMD を有効にする | iSUS https://www.isus.jp/[...]
[44] 문서 BUD17-117 Auto Vectorization Support in OpenJDK 9 AArch64 Hotspot C2 Compiler | Linaro https://static.linar[...]
[45] 문서 Vectorization in HotSpot JVM | Oracle https://cr.openjdk.o[...]
[46] 문서 jdk.incubator.vector (Java SE 16 & JDK 16) https://docs.oracle.[...]
[47] 웹사이트 JEP 338: Vector API (Incubator) https://openjdk.org/[...] 2024-09-08
[48] 문서 Java Vector API on AArch64 - High Performance Computing (HPC) blog - Arm Community blogs - Arm Community https://community.ar[...]
[49] 문서 .NET における数値 | Microsoft Docs https://docs.microso[...]
[50] 웹사이트 Using SIMD with WebAssembly — Emscripten 3.1.61-git (dev) documentation https://emscripten.o[...] 2024-06-01



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com