현재 위치 - 주공해몽공식사이트 - 팔자 점술 - DSP 캐시 사용 방법

DSP 캐시 사용 방법

프로세서의 캐시는 프로세서 주위에 저장된 고속 메모리로, 일부 연산 및 처리 중 명령을 저장하여 연산 속도를 높이는 데 사용할 수 있습니다.

이 문서에서는 캐시를 시스템의 일반 스토리지와 비교한 다음 캐시의 몇 가지 기본 이론과 용어, 캐시 프로세서 구조에서 캐시의 중요성에 대해 설명합니다. TI 회사의 TMS320C64x DSP 구조를 기반으로 이 문서에서는 캐시의 작동 방식, 구성 방법 및 cache 를 올바르게 사용하는 방법에 대해 중점적으로 설명합니다. 이 기사는 전체 텍스트를 통해 캐시의 일관성을 전달합니다.

스토리지 구조

CPU 가 외부 스토리지에 액세스할 때 스토리지 액세스 금지가 발생하지 않습니다. 또한 내부 스토리지를 액세스할 때 액세스 지연이 발생하지 않습니다.

CPU 의 시계가 600MHZ 로 올라가면 메모리 속도도 600MHZ 로 올라야 액세스를 기다리는 상태가 나타납니다. 불행히도 대부분의 경우 같은 주파수로 600MHZ 에서 작동하는 내부 스토리지는 매우 비쌉니다. 300MHZ 는 CPU 주파수를 크게 낮출 수 있기 때문에 좋은 선택이 아닙니다. 알고리즘이 각 주기마다 메모리에 액세스해야 하고 메모리에 액세스할 때마다 한 주기를 기다려야 한다고 상상해 보십시오. 이렇게 하면 액세스 주기가 두 배로 늘어나 CPU 의 작동 빈도가 두 배로 줄어듭니다.

해결 방법은 다중 레벨 스토리지를 사용하는 것입니다. CPU 에 가장 가까운 메모리는 액세스 지연 없이 빠르고 작은 블록으로 구성됩니다. 일부 CPU 와 약간 달리 더 크지만 약간 느린 메모리를 사용합니다. 로우 레벨 메모리의 경우 CPU 에 가장 가까운 메모리가 일반적인 캐시 메모리입니다.

위치 규칙

물론 CPU 가 가장 가까운 메모리에 가장 빠르게 액세스할 수 있는 경우 이 솔루션이 유효해야 합니다. 위치 법칙으로 인해 대부분의 CPU 에 적용됩니다. 즉, 프로그램은 특정 창 시간 동안 전체 주소 공간의 관련된 작은 영역에만 액세스합니다. 여기에는 다음과 같은 두 가지 기본 유형의 위치가 포함됩니다.

1, 공간 위치 규칙: 방금 방문한 리소스 주위의 리소스에 액세스할 가능성이 더 큽니다.

2. 시간 및 위치 규칙: 과거 시점에 방금 액세스한 자원은 향후 즉시 액세스될 가능성이 더 큽니다.

공간 위치 규칙은 컴퓨터 프로그램의 프로그래밍 스타일에 의해 결정됩니다. 일반적으로 관련 데이터는 메모리에 계속 저장됩니다. 예를 들어 * * * 가 같은 유형은 항상 첫 번째 요소를 첫 번째 행에 배치한 다음 두 번째 요소를 배치하는 방식입니다. 마찬가지로, 시간 위치 법칙의 형성은 프로그램에 포함된 구조 (예: 루프 구조, 동일한 명령 호출 (또는 동일한 데이터) 및 반복) 때문입니다.

그림 2 는 6 차 FIR 필터를 보여 주는 공간 위치 규칙을 보여 줍니다. Y[0] 출력을 계산하기 위해 데이터 버퍼 x[] 에서 6 개의 샘플 데이터를 읽습니다. 이 값은 스토리지에서 액세스하는 샘플 데이터의 예산 방법에 의해 결정됩니다. 데이터 액세스가 완료되면 캐시 컨트롤러가 메모리에서 x[0] 및 일련의 샘플 값 주소를 제거합니다. 이 일련의 주소 값을 캐시 문자열이라고 합니다. 저속 스토리지에서 데이터 문자열을 다시 검색하면 일부 CPU 지연 주기가 발생할 수 있습니다. 이렇게 하는 목적은 다음 계산을 수행할 때 x[0] 근처의 이 수치에 즉시 액세스할 수 있도록 하기 위한 것입니다. 이 원칙은 다음 5 개의 샘플링 값 (x[ 1]-x[5]) 이 즉시 액세스되기 때문에 FIR 필터에 적용됩니다. 이 다섯 가지 값에 대한 액세스 프로세스는 저속 메모리가 아닌 캐시에서 수행되므로 지연 기간이 없습니다.

다음 출력 y[ 1] 를 계산할 때 5 개의 샘플 값 (x[ 1]-x[5]) 이 다시 사용되며 하나의 샘플 값 (x[6]) 만 새 것입니다 모든 샘플링 값이 캐시로 추출되어 CPU 에 지연이 없습니다. 이전에 사용한 데이터가 데이터 처리에서 재사용된 이 예는 시간과 위치의 원리를 잘 보여 줍니다.

캐시는 시간과 공간에서 로컬로 데이터에 액세스하는 것을 기준으로 합니다. 따라서 저속 메모리에 대한 액세스가 크게 줄어들고 대부분의 데이터 액세스는 CPU 작동 주파수의 캐시에 의해 제공됩니다.

기억률:

캐시 시스템은 일반적으로 세 가지 수준으로 구성됩니다.

1 및 레벨 1 캐시 (L 1) 는 CPU 칩에 위치하여 CPU 작동 주파수로 작동합니다.

2. L2 캐시 (L2) 도 칩에 있으며 L 1 보다 느리고 더 큽니다.

3. L3 캐시 (L3) 는 CPU 외부에 위치하며 가장 느리고 가장 큰 메모리입니다.

각 수준에서 캐시 실행에 해당하는 요소는 캐시 간격 프로세서의 간격에 따라 달라집니다. 표 1 은 일반적인 대응 시간을 보여줍니다.

산술 유닛이 메모리에서 데이터를 추출해야 하는 경우 먼저 가장 높은 수준의 캐시에서 찾은 다음 두 번째 높은 캐시에서 찾습니다. 캐시에서 찾은 경우 적중이라고 합니다. 그렇지 않으면 실수라고 합니다.

캐시 시스템의 성능은 캐시 애플리케이션 적중 수 (적중률이라고도 함) 에 따라 달라집니다. 캐시 적중률은 특정 수준의 캐시에 대해 더 높은 성능을 의미합니다. 전체 캐시 시스템의 성능은 모든 수준의 캐시 적중률에 따라 달라집니다. 예를 들어, 캐시 시스템에서 1 차 L 1 캐시의 적중률은 70%, 2 차 L2 캐시의 적중률은 20%, 3 차 L3 캐시의 적중률은 5%, 총 메모리는 5% 입니다. 따라서 그림 3 을 기반으로 한 이 시스템의 통합 스토리지 성능은 다음과 같습니다.

(0.7 * 4)+(0.2 * 5)+(0.05 * 30)+(0.05 * 220) =16.30 나노초

이 개념을 설명하기 위해 TI 의 TMS320C64x DSP 스토리지 구조를 예로 들어 보겠습니다. (표 4) 2 단계 내부 캐시 1 개와 외부 스토리지 1 개가 포함되어 있습니다. L 1 캐시는 CPU 에서 지연 없이 액세스할 수 있습니다. L2 메모리는 L2SRAM (주소 지정 가능한 슬라이스 내 메모리) 및 L2 캐시로 프로그래밍되고 할당될 수 있습니다. 어떤 설정에서든 L2 스토리지는 2 주기마다 한 번만 액세스할 수 있습니다. L2 의 크기는 칩에 따라 다르지만 항상 L 1 보다 훨씬 큽니다. TMS320C6454 DSP 의 경우 L2 의 크기는 1MByte 입니다. C64x DSP 는 최대 2GB 의 외부 스토리지를 지원합니다. 메모리 속도는 메모리 사용 프로세스 유형에 따라 다르며 대부분 100MHZ 정도입니다. 그림 3 에서 모든 캐시 및 데이터 채널은 캐시 컨트롤러에 의해 자동으로 제어됩니다.

캐시된 데이터 업데이트

캐시도 운영 메모리의 백업 일부이므로 캐시가 운영 메모리의 데이터를 실시간으로 반영할 수 있는지 여부가 중요합니다. 캐시의 데이터가 변경되고 주 메모리의 데이터가 변경되지 않은 경우 캐시의 데이터를 "더티" 데이터라고 합니다. 데이터가 기본 스토리지에서 변경되었지만 캐시에서 실시간으로 변경되지 않은 경우 캐시에 있는 데이터를 "지연" 데이터라고 합니다.

캐시 디렉터는 다양한 기술을 사용하여 캐시 일관성을 유지함으로써 모든 유용한 정보가 지연 데이터가 아닌 캐시에 저장되도록 합니다. 모니터링 및 다시 쓰기 작업은 캐시 일관성을 유지하는 두 가지 방법입니다. 모니터링' 은 캐시가 주 메모리에서 전송되어 캐시 주소에 영향을 주는지 여부를 나타냅니다. 캐시가 이러한 전송을 감지하면 주 스토리지에 맞게 즉시 업데이트됩니다. 운영 스토리지에서 데이터를 복제하는 이러한 프로세스를 "다시 쓰기" 작업이라고 합니다.

캐시가 주 메모리보다 작기 때문에 자주 채워집니다. 이 경우 캐시로 이동된 모든 새 데이터가 기존 데이터를 대체합니다. 데이터 대체를 결정하는 방법에는 여러 가지가 있습니다. 예를 들어 무작위 교체, 선입선출 교체, 최근 최소 사용 교체 등이 있습니다. 대부분의 프로세서는 가장 최근에 가장 적게 사용된 대체 방법을 사용합니다. 이렇게 하면 최근에 가장 적게 사용된 데이터를 최신 데이터로 바꿀 수 있습니다. 이 방법은 시간과 위치의 법칙에서 나온다.

직접 맵 캐시

캐시는 직접 매핑 또는 통합 모드로 설정할 수 있습니다. 이러한 용어를 설명하기 위해 5 12 열과 32 바이트로 구성된 C64X 의 L1P 캐시를 예로 들어 보겠습니다. 각 행은 지인과 고정된 메모리 주소에 매핑됩니다. 예를 들면 다음과 같습니다.

0000h 에서 00 19h 까지의 주소는 종종 0 열로 캐시됩니다.

0020h 에서 0039h 까지의 주소는 일반적으로 캐시에 의해 1 열에 배열됩니다.

3FE0h 에서 3FFFh 까지의 주소는 종종 캐시에 5 1 1 열로 배열됩니다.

따라서 주소 4000h 를 확보해야 하는 경우 캐시 용량이 모두 소진되면 4000h 에서 40 19h 까지의 주소는 열 0 에서 다시 시작해야 합니다.

복제된 데이터를 저장하기 위해 각 행의 l1p 캐시는 다음과 같습니다.

캐시에 저장된 열에 유용한 정보에 대한 유효한 신호가 포함되어 있는지 여부를 나타냅니다.

지정된 열에 다른 주소의 데이터가 포함될 수 있으므로 해당 값이 주소의 높은 18 비트인 태그가 필요합니다. 예를 들어 열 0 에는 0000h 에서 00 19h 까지의 데이터 또는 4000h 에서 40 19h 까지의 데이터가 포함될 수 있습니다.

5 ~ 비트 13 주소에 해당하는 설정 가능한 데이터. 직접 매핑의 경우 이 설정의 데이터는 이 열의 값과 동일합니다. 공동 모델은 더 복잡하며 나중에 논의 할 것입니다.

이제 CPU 가 0020h 의 주소를 방문할 때 어떤 일이 발생하는지 살펴보겠습니다. 캐시가 완전히 유효하지 않다고 가정하면 모든 열에 유효한 데이터가 포함되지 않습니다. CPU 가 주소 20h 에 대한 액세스 요청을 실행하면 캐시 컨트롤러는 일부 주소 비트 (예: 비트 5 ~ 13) 에서 열 주소와 같은 위치에서 질의를 시작합니다. 섹션의 주소 값 (5 위에서 13 비트까지) 이 1 으로 설정된 경우 조회할 주소와 일치합니다. 컨트롤러는 첫 번째 열의 플래그 비트도 주소 0020h ~ 0039h 의 높은 18 비트와 일치하는지 계속 확인합니다. 이 모든 것이 완료되면 유효한 데이터 비트를 검사하여 캐시에 유효한 데이터가 저장되어 있는지 확인합니다. 유효한 데이터 비트가 0 이면 캐시 컨트롤러는 실패 작업을 기록합니다.

이 실패 작업으로 인해 컨트롤러가 스토리지에서 해당 열의 데이터 0020h-0039h 를 읽고 유효한 데이터 비트를 1 으로 설정합니다. 또한 일부 주소 값은 태그 RAM 에 저장됩니다. 얻은 데이터는 액세스 작업을 완료하기 위해 CPU 로 전송됩니다.

0020h 주소에 다시 액세스하면 캐시 컨트롤러가 해당 주소를 다시 가져오고 해당 설정 및 표시를 확인합니다. 유효한 데이터 비트가 1 이면 컨트롤러는 적중 작업을 기록하므로 캐시 열의 데이터도 CPU 로 전송되어 전체 액세스 작업을 완료합니다.

통합 설정 모드

공동 설정 모드는 직접 매핑 모드의 연속입니다. 직접 매핑 모드에서는 각 설정에 하나의 열만 포함됩니다. 통합 설정 모드에서는 각 설정에 다중 모드 라는 여러 열이 포함됩니다. 그림 5 에서는 C64x DSP 의 L 1D 를 예로 들어 이러한 공동 설정 캐시를 보여 줍니다. 총 용량이 64 바이트 * * * 16k 바이트인 양방향 통합 설정 캐시입니다.

데이터를 저장하기 위해 L 1Dcache 의 각 열에는 다음이 포함됩니다.

최근 최소 사용 비트는 최근에 거의 사용되지 않은 도로를 나타내는 데 사용됩니다 (L 1P 에서는 사용되지 않음).

캐시 열이 기본 스토리지 용량과 일치하는 더티 데이터 비트인지 여부를 나타냅니다 (L 1P 에서는 사용되지 않음).

캐시 열에 유효한 데이터의 유효한 데이터 비트가 포함되어 있는지 여부를 나타냅니다.

주소의 높은 18 비트에 해당하는 플래그 비트

5 ~ 13 비트 주소에 해당하는 설정 데이터.

적중 및 실패 확인은 직접 매핑 캐시와 동일합니다. 차이점은 이때 두 개의 플래그 비트가 필요하다는 것입니다. 하나의 플래그 비트는 요청된 데이터가 어느 방향인지 기록합니다. 경로 0 의 데이터를 명중하면 경로 0 의 열에 있는 데이터에 액세스하고, 경로 1 의 데이터를 명중하면 경로 1 의 열에 있는 데이터에 액세스합니다.

두 방법 모두 실패하면 메모리에서 데이터가 할당됩니다. 가장 최근에 가장 적게 사용된 비트는 스위치 작업과 유사한 데이터 할당 방법을 결정합니다. 할당된 열 0 의 가장 최근에 가장 적게 사용된 비트가 0 으로 설정된 경우 이 데이터는 첫 번째 열에 할당됩니다. 캐시 열에 대한 액세스가 읽기 또는 쓰기인지 여부에 관계없이 최근에 가장 적게 사용된 플래그 비트가 변경됩니다. 예를 들어 채널 0 의 열을 읽으면 가장 최근에 가장 적게 사용된 비트가 1 으로 전환됩니다. 최근 가장 적게 사용된 비트는 실패 작업만 기록하기 때문에 적중, 실패, 읽기 또는 쓰기에 관계없이 상태가 매번 업데이트됩니다.

L 1P 의 경우 L 1D 는 메모리에 새 데이터를 적용할 때 읽기 작업이 적중 또는 실패 여부에 관계없이 읽기 할당 캐시입니다. 쓰기 실패 작업 중 데이터는 쓰기 스토리지에서 스토리지로 전송되며 L 1 dcace 를 우회합니다. 쓰기 적중 작업 중 데이터가 메모리에 즉시 기록되는 대신 캐시에 기록됩니다. CPU 쓰기 액세스 변경 데이터가 액세스되면 캐시의 내용이 다시 쓰기 캐시로 커밋되고 데이터가 메모리에 기록됩니다.

더티 데이터 비트는 캐시의 데이터가 쓰기 작업에 의해 수정될 때 수정된 새 데이터가 운영 스토리지에 기록되지 않았음을 나타냅니다. 처음에는 더티 데이터 비트에 0 이 할당됩니다. CPU 에 의해 열이 기록되면 더티 데이터 비트는 1 이 됩니다. 열이 캐시에서 제거되면 해당 데이터는 주 메모리에 다시 기록됩니다. 읽기 실패 작업이 발생하고 더티 (dirty) 데이터 열에서 새 데이터가 요청될 때 발생합니다. 다시 쓰기 명령은 다시 쓰기 작업을 생성하기 위해 캐시 컨트롤러로 전달되지만 자주 발생하는 것은 아닙니다.

캐시 성능 최적화

세 가지 누락 된 상황이 있습니다.

불가피한 실패 (첫 번째 실패라고도 함): 이 실패는 데이터가 캐시에 처음 배치될 때 발생합니다. 다음 두 가지 놓친 방법과 구별하기 위해 피할 수 있다.

충돌 실패: 열이 재사용되기 전에 대체될 때 실패가 발생합니다.

용량 부족: 캐시 용량이 모두 소진된 경우에 발생합니다. 용량 실패는 충돌 적중의 한 방법입니다.

각 실패 모드에 대해 컨트롤러가 메모리에서 캐시로 데이터를 넣는 동안 지연이 발생합니다. 성능을 향상시키려면 각 열의 내용을 교체하기 전에 가능한 한 재사용해야 합니다. 열을 재사용하여 다른 위치를 얻으면 공간 위치에 대한 액세스가 향상되고, 열을 재사용하면 시간 위치에 대한 액세스가 향상됩니다. 최적화된 캐시 스토리지입니다.

성능의 기본 기준.

예를 들어, 캐시 버퍼 메모리가 자주 액세스되면 캐시 성능이 상대적으로 높습니다. 이 액세스 모드는 다음 열에 액세스하기 전에 이전 열에 반복적으로 액세스합니다. 예를 들어, 다음 코드는

높은 적중률:

다음 코드는 메모리 액세스에 큰 도약이 있기 때문에 이전 단락과 동일한 성능을 제공합니다. 즉, 다음 열에 액세스하기 전에 이전 열에 대한 액세스 속도를 낮춥니다.

캐시에서 열 하나를 쫓아내고 다시 액세스해야 하는 경우 캐시에 다시 써야 합니다. 따라서 이러한 추방을 피하는 방법은 매우 중요해졌으며, 그러한 누락의 원인을 파악하는 것은 우리가 다음 번 놓치지 않도록 하는 데 도움이 될 수 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 남녀명언)

위에서 설명한 바와 같이 용량이 누락된 이유는 캐시 용량이 운영 스토리지 용량보다 작기 때문입니다. 용량이 부족하면 캐시 용량을 늘리는 것이 가장 쉬운 방법입니다. 예를 들어,

C64x DSP 의 L2 캐시는 캐시와 SRAM 의 혼합으로 구성할 수 있습니다. 많은 용량이 누락된 경우 프로그래머는 L2 메모리를 캐시로 더 많이 사용할 수 있습니다. 선택할 수 있습니다

해결책은 필요한 데이터의 양을 줄이는 것입니다.

충돌 오류가 있는 경우 가장 최근의 시간 데이터를 다른 선형에 매핑할 수 있도록 데이터 정렬을 재정렬하는 것이 중요합니다. 직접 매핑의 경우 데이터를 다른 행에 매핑하는 것과 유사합니다. ) 메모리 정렬을 변경하면 데이터가 메모리의 다른 위치에 위치하여 충돌이 발생하지 않습니다. 대안으로 하드웨어 설계 관점에서 다중 설정 모드는 다중 열 모드를 생성할 수 있습니다. 따라서 동일한 설정에 매핑된 메모리의 두 열은 충돌 없이 캐시에 적용할 수 있습니다.