허위 공유 란 무엇입니까?
거짓 공유는 동시에 실행중인 두 응용 프로그램이 각 프로그램이나 프로세스가 자체 캐시에 저장 한 동일한 논리 메모리 영역의 정보에 액세스하려고 할 때 컴퓨터 프로그램에서 발생할 수있는 상황입니다. 각 응용 프로그램 캐시의 데이터는 공통 소스에서 복사되므로 한 캐시를 수정하면 다른 캐시를 소스에서 다시로드해야합니다. 공유의 잘못된 측면은 하나의 프로그램에 의해 캐시 라인에 대한 변경이 실제로 두 번째 프로그램이 사용하는 데이터에 영향을 미치지 않는 경우에 발생합니다.이 경우 캐시를 다시로드하도록 강요하면 시스템 리소스가 낭비되고 부정적인 영향을 줄 수 있습니다 프로그램의 성능. 현재 캐시 된 라인에있는 데이터를 별도의 라인으로 이동하는 등의 잘못된 공유를 방지하는 효과적인 방법이 있지만, 애플리케이션 내에 포함 된 코드의 직접적인 결과가 아니기 때문에 잘못된 공유 문제를 감지하기가 어렵습니다. .
허위 공유가 발생할 수있는 주요 이유 중 하나는 운영 체제 또는 하드웨어가 데이터 읽기 및 쓰기를 처리하는 방법에서 찾을 수 있습니다. 프로그램이 하드 디스크 나 다른 소스의 정보를 읽거나 쓰는 경우 일반적으로 임시 캐시에로드되어 빠르게 액세스 할 수 있습니다. 소스 위치에서 캐시 된 정보의 양을 캐시 라인이라고하며 일반적으로 길이가 2 바이트에서 256 바이트 사이 인 논리 메모리 블록입니다. 일부 운영 체제 또는 시스템 아키텍처에서는 병렬 처리와 같이 프로그램을 동시에 실행할 수 있습니다. 즉, 두 개의 개별 프로그램이 동일한 캐시 라인에서 정보에 액세스하려고 시도 할 수 있으므로 각 프로그램에는 고유 한 소스 데이터 사본이 있으므로 한 캐시의 변경 사항이 다른 캐시에 반영되지 않아서 보유하고있는 데이터.
두 프로그램이 동일한 캐시 라인에 액세스하려고 할 때 상황을 처리하기 위해 사용되는 많은 메커니즘이 있지만, 결과적으로 한 프로그램은 다른 프로그램이 수정 한 업데이트 된 정보로 캐시를 다시로드해야합니다. 이 유형의 인시던트는 각 프로그램이 액세스하는 캐시 라인 내의 데이터가 관련되지 않은 경우 허위 공유라고합니다. 따라서 하나의 프로그램이 캐시를 다시로드하도록하는 것은 처리 능력 및 기타 자원의 낭비입니다. 캐시에서 정보를 수정하지 않는 프로그램의 경우 가장 자주 발생하는 문제이므로 다른 프로세스에서 변경 한 내용을 응용 프로그램이 덮어 쓸 위험이 없습니다.
허위 공유의 영향을 방지하거나 완화하기위한 두 가지 일반적인 방법이 있습니다. 첫 번째는 메모리의 데이터 전후에 빈 정보를 추가하여 다른 프로그램에서 액세스하지 않는 별도의 캐시 라인에 강제로 저장하는 것입니다. 두 번째 방법은 캐시 라인에 대한 읽기 및 쓰기 빈도를 제한하여 가능한 적은 재로드되도록하는 것입니다. 보다 복잡한 솔루션에는 캐시 수준 관리 또는 운영 체제가 공유를 처리하는 방식에 대한 변경도 포함됩니다.