Google은 주요 오픈 소스 프로젝트에서 소프트웨어 결함을 사전에 감지하기 위해 열심히 노력하고 있습니다. 그러나 현재 그들은 중앙 처리 장치의 결함을 감지할 SiliFuzz 시스템을 개발하고 있는 것으로 알려졌습니다.
SiliFuzz의 동작 원리는 에뮬레이터와 디스어셈블러를 사용하여 수집된 미리 준비된 테스트 데이터를 실행하여 프로세서의 동작을 분석하는 것입니다. 이것은 퍼징 유형 중 하나입니다. 프로세서에는 "임의의" 계산이 로드되며 그 결과는 출력에서 확인됩니다. 불일치가 있으면 프로세서에 결함이 있는 것으로 간주됩니다.
시스템은 생산, 설치, 작동 중 발생할 수 있는 칩의 전기적 결함을 먼저 감지하도록 설계되었습니다. CPU 자체의 논리적 오류가 아닌 특히 주의를 기울입니다. 동시에 테스트 자체는 "전투" 시스템에서 사용할 수 있는 저수준 디버깅 메커니즘을 사용하지 않습니다.
사실 개발자의 임무는 성능에 미치는 영향을 최소화하면서 각 Google 서버의 각 코어를 정기적으로 테스트할 수 있는 시스템을 만드는 것입니다. 현재 형태의 SiliFuzz는 특정 머신의 부하가 크지 않은 순간을 선택하여 2분 이내로 4개의 스레드(SMT가 있는 2개의 코어) 그룹을 순차적으로 테스트합니다. 지금까지 개발자는 Google 자체에서 대량으로 사용하는 x86-64 프로세서를 사용합니다.
이 프로젝트의 주요 목표는 잘못된 계산으로 이어지는 숨겨진 결함의 감지를 자동화하는 것입니다. 이는 칩 작동의 작은 편차만이 오류 배열의 누적으로 이어지기 때문에 일반적인 오류 및 충돌보다 훨씬 더 위험합니다. 예를 들어, 일부 CPU는 때때로 F2XM1(x2-1) 호출의 잘못된 결과를 반환하는 반면 다른 CPU는 올바른 것과 다른 FCOS 계산을 주기적으로 제공하는 것으로 나타났습니다. 후자의 경우 그 차이가 0.0000003% 미만이지만 문제에 대해서는 이 정도면 충분할 수 있습니다.
언급한 바와 같이, SiliFuzz를 사용하여 발견된 결함의 약 45%는 다른 도구에서 추적되지 않습니다. 앞으로 개발자들은 SiliFuzz를 확장하고 프로그램의 속도를 높이고 일반적으로 작업 품질을 향상시킬 계획입니다.
2021-10-19 15:51:56
작가: Vitalii Babkin