ATi X1K 계열의 새로운 도약 – 메모리 제어 –

  • Post author:
  • Post category:
  • Post comments:0 Comments
  • Post last modified:2020-12-07

 VGA시장에 최초 90nm 공정의 도입과 함께 X1K 계열의 새로운 기술들은 현제 시장의 추세인 고해상도 고화질 영상 출력물의 요구, 많은 지적을 받았던 쉐이더 모델3.0의 지원(HDR) 그리고 SLI와 같은 GPU의 병렬처리의 지원등의 요구를 만족시키기 위한 기술들을 가지고 출시 되었으며 새로 도입된 기술들 중 우선 메모리 제어부분을 살펴보도록 하자.

X1K계열의 메모리 컨트롤러


링버스 메모리 컨트롤러

ATi는 좀더 유연하고 효율적인 메모리 컨트롤러의 개발을위한 노력에 대한 결과로 링버스 메모리 컨트롤러를 도입하게 되었으며 기존의 기술과 어떤점이 다른지 알아보도록 하자.

기존의 ATi의 기존의 메모리 컨트롤러의 동작 원리는 다음과 같다.

  1. 메모리 클라이언트가 메모리 컨트롤러에 읽기신호를 보냄.
  2. 컨트롤러는 요구 신호의 순서에 따라 정확한 위치의 DRAM을 찾아 메모리 디바이스로 요청신호를 보냄.
  3. 메모리 디바이스는 요청된 데이터를 메모리 컨트롤러로 보냄.
  4. 메모리 컨트롤러로 보내진 데이터를 클라이언트로 보냄.

이와 같은 기존의 방식은 컨트롤러를 중심으로 PCB상에 많은 선들이 밀집되고 경로 설정에 어려움이 있어 512비트의 메모리 인터페이스와 같이 대역이 넓어진 환경을 구현하는데에 있어 매우 비효율적이다.

이런 문제를 해결하기 위해 분산 센터 방식의 링버스 구조의 컨트롤러를 도입하게 되었는데 구조는 다음과 같다.

(링버스 아키텍쳐 다이어그램.)

링버스의 동작 원리는 다음과 같다.

  1. 메모리 클라이언트가 메모리 컨트롤러에 읽기신호를 보냄.
  2. 컨트롤러는 요구 신호의 순서에 따라 정확한 위치의 DRAM을 찾아 메모리 디바이스로 요청신호를 보냄.
  3. 요청된 데이터가 위치한 메모리 디바이스는 데이터를 요청한 클라이언트와 가장 가까운 링스탑으로 요청된 데이터를 링버스에 실어보냄.
  4. 클라이언트는 요청했던 데이터를 링스탑을 통해서 받음.

 이와 같은 방식은 기존의 모든 DRAM을 메모리 컨트롤러와 직접 연결했던 방식과는 달리 링버스를 통해서 연결하는 방식이며 데이터의 이동또한 링버스 상에서 일어나며 링버스는 칩의 최외곽에 위치하여 모든 데이터의 이동 경로상의 문제를 칩의 외곽으로 전담 시켰으며 그로인해 GPU에 간섭을 주지 않는 넓은 대역과 빠른 속도를 제공하게 된다.

X1800의 경우 서로 상반되는 방향으로 동작하며 4개의 링스탑을 갖는 두 개의 256비트 버스로 구성(8채널)되어 512비트의 대역(듀얼 링버스)을 제공하며 X1600의 경우 이것의 절반인 256비트 그리고 X1300의 경우 Pro의 경우 256비트의 대역을 제공하 고 하위 카드는 그 절반 수준의 대역을 제공한다. 또한 X1600과 X1300의 경우 X1800의 절반인 2개의 링스탑(4채널)을 갖는다.


메모리 인터페이스

X1800 의 경우 링버스는 서로 상반된 방향의 듀얼채널 구성으로 512비트의 대역을 제공하며 이중 하나의 링버스는 256비트의 대역을 갖는다. 이는 기존의 하이엔드 카드들이 제공하는 256비트의 대역과 같지만 이를 구성하는데 있어 조금 다른 방법을 사용하고 있다. 기본의 256비트의 버스는 4개의 64비트 채널로 구성되어 있었지만 새로운 버스는 8개의 32비트 채널로 구성되어 있다. 이로 인해 얻어지는 이득은 기존의 버스는 32비트의 데이터가 요구되면 64비트의 대역을 갖는 1개의 채널을 점유해야하기 때문에 나머지 32비트의 공간은 낭비되는 현상이 있었지만 8개의 32비트의 채널로 구성된 새로운 인터페이스는 이런 상황에서 32비트 채널 하나만 할당하고도 32비트 채널이 하나더 남는 이점이 생겨 메모리 공간 낭비를 줄여주게 된다.

이로인해 X1600의 경우 4개의 32비트 채널로 구성되어 있으며 X1300의 경우 4개, 2개, 1개의 채널을 갖는 제품이 존재하며 그밖에 더욱 향상된 HyperMemory 2 기술이 적용된 제품또한 선보일 예정이다.

(기존의 메모리 채널 구성과의 비교도.)

내부 지연 시간을 없애다

 ATi는 메모리의 효율을 높이기위해 메모리 내부 지연시간을 최대한 줄여야 한다는 결론하에 새로운 방식의 캐쉬 운용 및 작업중재기의 도입을 이문제의 해결책으로 내놓게되었다 .

 먼저 캐쉬운용에 있어서 기존의 ATi 그래픽카드의 캐쉬는 직접사상캐쉬(Direct mapped cache)방식을 사용하여왔다. 이방식은 그래픽 메모리에 미리 정의된 블록상에 매핑된 데이터의 묶음을 그대로 이용해야 하는 방식이다. 이러한 방식은 정의된 데이터 묶음을 그대로 사용해야 함으로 인해 지연시간의 발생과 캐쉬 적중률 하락 그리고 메모리 대역의 낭비와 같은 문제가 있었다.

 이에 대안으로 X1K계열의 카드에서는 텍스쳐, 색상, 깊이 그리고 스텐실 버퍼에 완전연관사상캐쉬(Fully associative cache)방식을 사용하게 되었는데 이방식은 캐쉬의 어떤 라인이라도 외부 메모리의 빈공간이면 어느곳에나 매핑이 가능하다는 장점이 있어서 캐쉬의 동작 지연시간을 줄이고 적중률을 높일 수 있다.

(직접사상캐쉬와 완전연관사상캐쉬의 비교도.)

이와 함께 좀더 지능적이며 프로그래밍 가능한 메모리 우선순위 중재기 로직이 도입되었는데  이는 메모리의 읽기/쓰기와 관련한 모든 작업의 우선순위를 퍼포먼스 향상을 위해 조절해주는 역할을 한다.

 중재기 로직의 기본 동작 원리는 클라이언트의 데이터 소모량과 지연정도에 따라 좀더 높은 요구도를 갖는 클라이언트에 높은 우선순위를 주어 처리하는 방식인데 이방식엔 두가지 중요한 요소가 있으며 다음과 같다. 먼저 클라이언트의 중요도는 어플리케이션을 기반으로 프로그래밍 되어지며 그와함께 메모리의 효율성을 체크하여 가장 최적의 처리를 하게 되는데 이또한 어플리케이션을 기반으로 처리하게 되며 이 두가지 상태를 체크하는 방식은 추후 드라이버의 업데이트를 통해 지속적으로 개선될 수 있는 사항이며 특별한 어플리케이션 을 위해 Catalyst A.I를 통한 트윅 또한 가능하게 된다.

(A.I. 성능향상의 열쇠?)

이러한 프로그래밍 가능한 중재기를 도입은 메모리 효율을 극대화 시킬 수  있게 도움을 주었을 뿐만 아니라 쉐이더 처리유닛의 성능 향상에도 기여하고 있다.

(메모리 중재기 동작 다이어그램.)

압축기술의 업그레이드

ATi는 기존의 압축 기술인 3Dc를 한단계 업그레이드한 3Dc+를 X1K계열의 제품에 도입하여 기존의 두 개의 8비트 정수 컴포넌트로 구성된 노멀맵과 텍스쳐의 4:1압축을 지원 했던것에 대비 단일 8비트 정수 컴포넌트에대해 2:1압축의 지원이 가능하게 되었다. 또한 Hyper Z의 개선으로 기존의 Radeon 제품보다 약50%더 많은 보 이지 않는 영역을 제거할 수 있게 되었으며 Z/스텐실 버퍼의 압축을 최대 8:1까지 지원하여 고화질3D 영상과 안티알리아싱의 사 용 그리고 비등방성 필터링 사용시 대역 사용에 있어 좀더 효율적인 환경을 제공 하게 되었다.

Author Details
Linus Lee aka y1sh former ATiMania.com sysop during 2001-2012. DevSecOps Engineer who likes tech, science, programming and solving problems 🙂
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments