2012-08-29 2 views
0

나는 항상 레지스터가 CPU registers이라고 들었다. 다른 장치 나 하드웨어에도 디코더 하드웨어, 디스플레이 장치, DMA 컨트롤러와 같은 자체 레지스터가 있습니까?장치에 레지스터가 있습니까?

그렇다면 instruction execution에 필요한 경우 해당 장치 레지스터에 저장된 값이 CPU 레지스터로 전달되는 방식은 무엇입니까? 가능하다면 실례를 들어 설명해 줄 수 있습니까?

답변

2

일부 장치에는 전용 레지스터가 있고 다른 장치에는 전용 레지스터가 없습니다. 다른 것들 중 일부는 실제로는 존재하지 않아도 "등록"카테고리에 집중되는 등록과 같은 구성 요소를 가지고 있습니다.

장치와 나머지 시스템 간의 I/O는 포트 기반 IO (일반적인 메모리 액세스와 비슷하지만 별도의 시스템), 메모리 기반 IO (특정 장치와주고받을 수있는 주소), 직접 메모리 액세스 (장치가 메모리 버스를 통해 시스템 메모리에 자율적으로 액세스 할 수있는 제어 주소)로 구성됩니다.

mine의 친구가 Port IO 기반 SATA HDD 드라이버를 작성했지만, 대부분의 최신 OS는 CPU 사용량이 적기 때문에 DMA를 사용합니다.

자체 처리 장치가 포함 된 그래픽 카드와 같은 장치는 처리에 사용되는 참 레지스터를 포함합니다. 내가 아는 바로는 프로세서는 직접 사용할 수 없지만 프로세서는 (아마도 포트 기반 IO와 DMA의 조합을 통해) 실행 가능한 데이터를 GPU에 제공하여 GPU가 실행하고 GPU에 저장할 수 있습니다. DMA를 통해 액세스 할 수있는 온보드 장치 메모리에 계산 결과를 저장합니다.

0

물론입니다. 단어 등록기의 정의를 찾아보십시오. 사운드 카드 또는 칩에는 볼륨을 제어하는 ​​데 사용되는 하나 이상의 레지스터가 있습니다. 단일 메모리 또는 I/O 트랜잭션으로 작성된 개별 레지스터

대부분의 주변 장치에는 레지스터가 있으며 일부는 메모리 뱅크를 가지고 있습니다. 일부 메모리는 레지스터를 사용하여 한 번에 한 항목 씩 액세스됩니다 (오프셋 레지스터에 오프셋 쓰기, 데이터 레지스터를 사용하여 데이터 쓰기 또는 읽기, 반복) 또는 메모리 뱅크가 어떻게 든 호스트의 메모리 공간에 매핑됩니다. 사운드 카드 나 비디오 카드에 대해서 생각해 보면, 개별 레지스터는 다양한 것들, 너비, 높이, 깊이, 주파수 등을 제어하는 ​​데 사용됩니다. 사운드 카드의 경우 믹서 컨트롤 등은 레지스터를 통해 이루어집니다. 비디오 데이터, 픽셀, 문자, 텍스처 등을 비디오 메모리 또는 gpu로 옮기는 작업은 호스트 주소 공간에 매핑되는 메모리 뱅크를 통해 수행 할 수 있습니다. 주변 장치의 메모리 양이 가용 ​​호스트 주소 공간의 뱅크보다 클 때 주변 장치의 레지스터를 사용하여 호스트 주소 공간의 구멍을 통해 사용 가능한 주변 메모리 뱅크를 제어하는 ​​경우가 있습니다.

cpu 프로세서의 레지스터는 종종 주소와 데이터 버스 및 읽기/쓰기 제어 신호가있는 sram을 사용하여 구현된다는 사실을 알 수 있습니다.