문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 HSA (문단 편집) === hUMA === [[파일:external/gigglehd.com/9c1a4504c4c54eff1bedd1c37964d3e9.png|align=center]] [[CPU]] 및 [[GPU]] 개발사 [[AMD]]가 설명하는 hUMA(heterogeneous Uniform Memory Access) 서로 다른 프로세서([[CPU]]와 [[GPU]])의 메모리 영역을 통일하여 [[RAM|메모리 영역]]을 공유한다는 개념이다. 한마디로 GPU가 CPU와 같은 수준으로 다루어지며, 동일한 메모리에 액세스할 수 있다는 것이다. 기존 방식은 CPU와 GPU가 서로 다른 메모리 영역으로 나누어져 있다.[* [[NUMA]]라고 부르는데, '서로 다른 메모리 영역으로 나뉜 거 = NUMA'가 아니다. 하나의 메모리 영역으로 되어 있어도 어떤 CPU core가 어떤 주소를 접근하느냐에 따라 latency / bandwidth에서 성능차이가 나는 경우에도 NUMA가 된다. 따라서 시스템 DDR 메모리와 그래픽 카드의 외장 GDDR 메모리의 영역이 하나로 합쳐지라도 DDR과 GDDR 메모리가 물리적으로 하나의 메모리로 통합되지 않는 이상, CPU에서 DDR 메모리로 접근하는 것과 그래픽 카드의 GDDR 메모리를 PCIe 버스를 통해서 접근하는 것과는 latency / bandwidth에서 성능차이가 날 수밖에 없기 때문에 여전히 NUMA로 남는다.] 이렇게 따로 떨어진 메모리 사이에서는 데이터 처리시 동기화와 주소 변환이 필요하다. 이를 CPU와 GPU가 공유하는 추상화된 메모리 계층을 생성해 동일한 메모리 어드레스를 사용하여 해결한다는 것이다. 이 과정에서의 CPU와 GPU의 양방향 메모리의 일관성을 하드웨어로 유지한다. 하드웨어가 양방향으로 캐시를 스누프하고 일관성을 자동으로 확보한다. 어느 프로세서가 캐시의 데이터를 갱신한 경우 다른 프로세서를 탐지할 수 있어 메모리 일관성의 에러가 생기지 않도록 하는 것이다.[* 간단하게 말해서, [[엔비디아]]의 [[CUDA]]와 비슷한 방향으로 간다고 생각하면 된다.] 기존의 데이터 연결방식은 "CPU - 주 메모리 - GPU 메모리 - GPU" 였는데 주 메모리와 GPU 메모리 영역을 통합시켜 "CPU - 공유 메모리 - GPU"로 연결한다는 것이다. 직렬(연속적인) 작업 담당하는 CPU와 병렬화 작업를 담당하는 GPU를 효율적으로 묶는 게 hUMA의 역할이다. 이를 통해서 GPU가 실행하는 범용 프로그램을 지금보다 더 간단하게 쓸 수 있도록 하는 것이다. * 장점: 간단한 작업 스케줄로, 관리가 편하다. 그 동안은 CPU와 GPU 사이의 데이터 전달을 [[운영체제|OS]]가 관리하는 방법을 썼기 때문에 데이터 추적이 어려운데, 데이터 처리 단계가 적어 작업 스케줄이 단순하며, 복사할 필요가 없음으로써 데이터 추적이 간단하고 메모리 관리가 훨씬 편하다. 이에 따라 줄어든 작업 스케줄만큼 더 빠른 처리가 되고, 불필요한 메모리 액세스가 줄어들어 전력 소비도 줄일 수 있다. 또한 프로그래머 입장에서는 하드웨어 사이의 데이터 전달시의 데이터 사이의 동기화와 일관성 문제를 신경 쓸 필요가 없다.[* 즉, 시금 사용되는 방식은 주 메모리와 GPU 메모리 사이의 두 데이터의 일치 여부를 누군가가 확인해 주어야 한다. 게다가 [[최적화]]를 위해서는 GPU 메모리가 어느 정도까지 데이터를 한 번에 처리할 수 있는지 여부를 직접 프로그래머가 확인하고 여기에 맞추어 처리 할 데이터양을 조절해야 한다. 그런데 HSA에는 그러한 작업은 불필요하다.] * 단점: 시대를 역행한 기술이'''었다'''. GPU 전용 메모리인 GDDR은 일반 DRAM보다 월등히 빠른 속도로 동작한다.[* 마치 RAID처럼 뱅크 그룹을 만들어 비약적인 속도 향상을 가져왔다. 하지만 GDDR이 일반 DRAM을 대체할 수 있다는 것은 아니다. 어디까지나 그래픽 연산에 한정된 성능이다. 그런데 HBM은 APU나 서버용 CPU에 넣는다는 소문이 들리는 것으로 보아 정말로 일반적인 DRAM을 대체할 지도 모른다. 물론 현재와 동일한 수준의 퍼포먼스를 발휘하려면 기술의 진보와 함께 최적화 작업이 동반되어야 할 것이다.] 그런데 주메모리에 GPU 메모리 영역을 통합시킨다면 GPU의 동작 속도도 덩달아 떨어진다. 이 점은 이 기술이 내장 그래픽 전용 기술이 될 수밖에 없는 이유이다.[* 물론 [[플레이스테이션 4]]처럼 일반 DRAM이 아닌 '''GDDR5를 주 메모리로 사용'''한다면 간단하게 해결되겠지만 [[게임기|게임 콘솔]]이 아닌 [[Windows]]라는 범용 운영체제를 사용하는 일반 PC에 DRAM을 GDDR로 바꾸는 것은 현재로서는 매우 어렵다.][* 현실적인 한계로, 아직은 내장 그래픽에만 HSA가 적용되지만, HSA는 외장 GPU의 그래픽 메모리와의 통합도 추진하기에 엄밀히는 틀린 말이다.] 인텔의 [[하스웰]]부터는 L4 캐시라고도 부르는 128MB의 eDRAM이 탑재됨으로써 [[브로드웰]], [[스카이레이크]] 세대에 들어서야 'IRIS' 라고 불리는 고성능 내장그래픽을 탑재한 모델에 한하여 [[AMD/APU]]를 뛰어넘는 내장그래픽 성능을 낼 수 있는 CPU를 만들었다. 게다가 그 동안 만들어진 프로그램은 GPU 메모리로 데이터를 보내도록 만들어졌다.[* 주 메모리의 속도가 GPU 처리속도를 못따라오다보니 미리 처리할 데이터를 GPU 메모리에 보내준다. 이를 '프리로딩'이라고 하는데, 자세한 내용에 대해서는 [[로딩]]항목의 2.2번 '심리스 방식' 을 참조하자.] 당연히 기존 프로그램과는 호환이 전혀 되지 않는다. 이러한 HSA의 장점을 살리기 위해서는 기존 방식과는 다른 방식으로 데이터를 전송하도록 프로그램을 새로 짜야 한다. 즉, 기존 프로그램 사용자에게는 전혀 쓸모 없는 기술인 셈이다. [[파일:f51f7010059eded555935e1bc1d1698b.png]] 2020년대부터 CPU의 GPU 메모리 접근이 [[Resizable BAR]] 기술을 통해 기존 256MB에서 전체 접근이 가능해지면서 하드웨어적 제한이 완화되었으며, 이를 지원하는 게임등 SW에서 성능이 향상되고 있다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기