값 캐시 인코딩

Value cache encoding

전력 소비는 임베디드 기기,[1] 모바일 컴퓨팅 및 고성능 시스템 모두에서 더욱 중요해지고 있습니다.오프칩 데이터 버스는 시스템 전력의 상당 부분을 소비합니다.오프칩 데이터 버스는 시스템에 따라 시스템에서 소비되는 총 전력의 9.8~23.2%를 소비하는 것으로 관찰됩니다.따라서 오프칩 데이터 버스의 소비전력을 줄이면 전체적인 소비전력이 감소합니다.

서론

[2] 오프칩 버스는 내부 노드 캐패시턴스 값이 높아지기 때문에 내부 캐패시턴스에서의 스위칭이 약간 증가하더라도 외부 주소 및 데이터 버스에서의 스위칭을 최소화하는 기술은 매우 유용하다.오프칩 전력 소비는 데이터 전송 중에 활성화되는 버스 회선의 수를 줄이고 액티브 버스 회선의 비트 전환 수를 줄임으로써 적어도 두 가지 기술로 줄일 수 있습니다.이 두 가지 기술을 혼합하면 최적의 결과를 얻을 수 있습니다.
값 캐시 인코딩은 오프 칩 데이터 버스의 전력 소비를 줄이기 위해 사용되는 방식입니다.이 방식에서는 데이터 버스 양쪽에 있는 캐시를 사용하여 오프칩 데이터 버스의 동적 전력 소모를 줄입니다.이러한 캐시는 그 내용이 항상 같도록 유지됩니다.

스킴 상세

이 프로토콜에서는 오프칩 데이터 버스의 양쪽에 작은 캐시(value cache, 줄여서 VC)를 사용합니다.이러한 값 캐시는 최근 버스를 통해 전송된 데이터 값을 추적합니다.이러한 캐시의 엔트리는 양쪽 값 캐시의 내용이 항상 같도록 구성됩니다.데이터 값을 버스를 통해 전송할 필요가 있는 경우 먼저 데이터 값이 송신자의 값 캐시(메모리인지 캐시인지)에 있는지 확인합니다.이 경우 실제 데이터 값 대신 데이터의 인덱스(즉, 값 캐시 주소 또는 인덱스)만 전송하며, 상대편(수신기)은 이 인덱스와 그 값 캐시를 사용하여 데이터 값을 결정할 수 있습니다.
1비트 스위칭액티비티를 사용하여 값 캐시 내의 데이터를 전송하기 위해 값 캐시 크기는 데이터 버스의 폭으로 제한됩니다.즉, 32비트 버스에서는 VC에 32엔트리밖에 설정할 수 없습니다.전력 프로토콜에 사용되는 값 캐시가 매우 작기 때문에 인덱스 값의 폭은 실제 데이터 값의 폭보다 훨씬 작습니다.따라서 전송을 위해 활성화해야 하는 오프칩 버스 라인이 줄어듭니다.
우리의 접근 방식은 오프칩 데이터 버스를 통해 전달되는 데이터 값의 인접성을 이용하여 첫 번째 옵션을 달성하려고 합니다.다만, 데이터의 폭(전송할 필요가 있는 것)이 작아지면, 전송 마다의 평균 비트 스위칭액티비티의 삭감도 기대할 수 있습니다.또한, 이 전환 활동은 우리의 전략과 함께 잘 알려진 버스 인코딩 방식을 사용함으로써 더욱 줄어들 수 있습니다.

캐시 일관성

수신측에서는, 송신측과 같은 VC 의 배치 및 치환 정책이 실행됩니다.따라서 버스를 통해 전송되는 데이터의 값은 송신측 VC와 같은 인덱스 위치에 있는 리시버 VC에 복사됩니다.버스를 통해 전송되는 데이터가 가상 데이터인지 아니면 VC에 대한 인덱스인지를 나타내기 위해 1개의 추가 제어 비트를 사용합니다.메모리 쓰기 액티비티는 같은 방법으로 처리됩니다.

처음에는 값 100과 200이 VC에 존재하지 않는다고 가정합니다.트랜잭션 #1 중에 A가 메모리에서 캐시로 전송됩니다.요청된 데이터 항목은 어떤 주소(예: 메모리의 주소 X)에 저장되며 값이 100입니다.메모리 컨트롤러는 VC에서 값 100을 검색하고 오류를 검출합니다.따라서 값 100은 오프칩 데이터 버스를 통해 전송됩니다.또한 전원 프로토콜에 따라 값 100은 소스 및 수신처의 VC와 동일한 위치(예를 들어 5)에 저장됩니다.트랜잭션 #2의 경우 메모리 컨트롤러는 값 200을 검색하지만 VC에서 값을 찾을 수 없으며 위에서 설명한 절차를 반복합니다.이 시점에서 양 끝에 있는 값 캐시에는 데이터 값 100과 200이 포함됩니다.트랜잭션 #3에서 메모리 컨트롤러는 (기존과 같은 메모리 위치 또는 같은 값을 가진 다른 메모리 위치의) 읽기 요구를 처리하기 위해 값 100을 전송해야 한다고 판단합니다.단, 값 100은 트랜잭션 #1의 결과로 로케이션5 에 있는 송신자의 VC 에 이미 존재하고 있는 것에 주의해 주세요.따라서 메모리 컨트롤러는 값 100을 송신하는 대신 인덱스 값 5를 송신합니다.한편, 리시버는 VC의 로케이션5 로부터 실제 데이터 값(이 경우는 100)을 취득합니다.마지막으로 트랜잭션 #4에서는 값 200의 데이터 항목 D를 메모리에 송신한다(즉, 기입 요구).단, 값 200은 메모리에서 캐시로 트랜잭션 #2의 결과로 양쪽 VC에 이미 캐시되어 있습니다.이것에 의해, 값 200의 캐시 카피(VC내에 존재하는)에 대한 인덱스를 이용해 트랜잭션 #4를 완료하지만, 역방향으로 한다.이 마지막 트랜잭션은 한 방향의 트랜잭션 중에 VC에 배치된 데이터가 반대 방향의 트랜잭션 중에 (VC에서) 재사용될 수 있음을 나타냅니다.

교환 정책

[3]LRU는 양쪽 캐시에서 대체 정책으로 사용됩니다.캐시에 저장된 각 값에 대해 참조 비트와 n비트 타임스탬프를 사용하여 구현됩니다.입력에 값이 나타나면 기준 비트가 설정된 것입니다.일정한 간격으로 기준 비트가 n비트 타임스탬프의 상위 비트 위치로 바로 시프트되므로 타임스탬프 내의 모든 비트가 오른쪽으로 시프트되고 타임스탬프 내의 최하위 비트가 폐기됩니다.예를 들어 timestamp 000은 이 값이 최근 3개의 시간 간격 동안 표시되지 않았음을 의미하며 timestamp 100은 마지막 시간 간격에서 방금 확인되었음을 의미하며 기준 비트가 설정된 타임스탬프 000은 현재 시간 슬롯에서 이 값이 발생했음을 의미합니다.
위의 조작은 모든 참조 비트가 리셋된 상태에서 양쪽 캐시의 모든 엔트리에 대해 수행됩니다.따라서 타임스탬프에는 최근 n개 기간의 값 발생 이력이 유지됩니다.
엔트리가 필요하고 값이 제거될 경우 선택한 엔트리는 타임스탬프가 가장 작고 참조 비트가 클리어된 엔트리가 됩니다.이 선택한 엔트리에 새로운 참조 비트와 타임스탬프(모두 0)가 포함된 새 값이 입력됩니다.

값 캐시 유형

프로토콜을 설명한 후 캐시를 유지하기 위한 두 가지 접근 방식을 살펴보겠습니다.

  1. 이전 실행에서 값이 나타나는 빈도에 따라 고정 값 집합을 사용하여 두 캐시를 모두 초기화할 수 있습니다.
  2. 프로그램 실행 시 변경되는 빈도 값 세트를 유지할 수 있습니다.따라서 빈도값 테이블의 내용은 실행의 다른 부분에 대한 빈도값의 변화에 적응합니다.
    캐시를 고정값으로 채우는 장점은 코더가 테이블의 내용을 동적으로 변경할 필요가 없기 때문에 런타임 오버헤드를 줄일 수 있다는 것입니다.단, 사전에 값을 알고 프로그램마다 다른 값을 필요로 합니다.반면 두 번째 방법은 데이터 값의 사전 정보가 필요하지 않으며 다른 프로그램을 구분하지 않습니다.이러한 기능을 통해 델은

빈번한 값을 확인할 수 있습니다.

기타 응용 프로그램

논의한 프로토콜은 한쪽 끝이 온칩 캐시이고 다른 한쪽 끝이 오프칩 메모리인 버스에 적용되었으며 오프칩 L2 캐시에서도 작동하도록 전략을 조정할 수 있습니다.또한 전원 프로토콜을 사용하여 온칩 L1 캐시와 온칩 L2 캐시 간의 스위칭 작업을 줄일 수 있습니다(단, 결과는 오프칩 버스를 사용하는 경우만큼 좋지 않습니다).실제로 델의 전략은 시스템 내의 임의의 2개의 통신 디바이스 간에 사용할 수 있습니다(VC 지원).또, 포인트 투 포인트 구성의 제약을 받지 않습니다.즉, 여러 디바이스가 공유(전력 소모가 많은) 데이터 버스를 통해 통신하는 환경에서 이 접근방식을 사용할 수 있습니다.
이 경우, 무엇보다도 일관성 있는 메커니즘이 필요합니다(논의의는 본 문서의 범위를 벗어납니다).이 전략의 단점은 두 개의 가치 캐시(온칩과 오프칩)에 필요한 추가 공간입니다.이 문서에서는 접근 방식의 회로 공간 함의에 대한 자세한 연구를 제시하지 않습니다.실험 결과 섹션에서 설명하듯이 소규모 VC(128엔트리)에서도 상당히 양호한 에너지 동작이 생성되므로 최적화에 따른 공간 오버헤드가 과도하지 않을 것으로 예상됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ 전원 프로토콜:오프칩 데이터 버스의 전력 소실 저감 http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1176262
  2. ^ Dinesh C Suresh; Banit Agrawal; Jun Yang; Walid Najjar (28 June 2005). "A Tunable Bus Encoder for Off-Chip Data Buses" (PDF). Retrieved 2015-04-22.
  3. ^ Jun Yang; Gupta, R. (2001). "FV encoding for low-power data I/O". ISLPED'01: Proceedings of the 2001 International Symposium on Low Power Electronics and Design (IEEE Cat. No.01TH8581). ieeexplore.ieee.org. pp. 84–87. doi:10.1109/LPE.2001.945379. ISBN 1-58113-371-5.