경합 메모리

Contended memory

경합 메모리ZX 스펙트럼의 64KB 주소 지정 메모리 공간의 일부를 나타내는 Sinclair의 이름입니다.최대 64KB의 경우 Z80 마이크로프로세서가 전용 버스 마스터이므로 읽기 및 쓰기는 최대 버스 속도로 작동하지만 경합 메모리 공간은 ULA와 Z80 간에 공유되며 우선 순위는 ULA가 높습니다.경합 메모리가 주소 0x4000을 차지합니다.Z80 메모리 맵의 0x7FF.이것은 48KB 기기의 첫 번째 16KB RAM이며 16KB 기기의 전체 RAM입니다.

ULA가 디스플레이를 읽어 TV 비디오 디스플레이를 생성하기 위해 이 RAM의 데이터를 속성으로 지정하면 경합이 발생합니다.따라서 수평 플라이백, 수직 플라이백 또는 스크린 테두리 사이에는 경합이 발생하지 않습니다.

또한 I/O에 대한 액세스는 Z80이 ULA I/O 포트에 액세스하는 동안 ULA가 경합 메모리를 읽어야 하는지 여부를 다룹니다.ULA I/O 포트는 짝수 주소(주소 비트 0은 0)를 가진 포트입니다.

Z80은 ULA가 경합 메모리에 액세스해야 할 때마다 대기한 후 경합 메모리 읽기 또는 쓰기를 진행해야 합니다.사용자에게 미치는 영향은 경합 메모리 또는 경합 I/O를 사용하는 프로그램이 해당 메모리를 사용하지 않는 프로그램보다 더 느리게 실행된다는 것입니다.

스노우 버그

ULA는 Z80의 클럭을 중지하고 메모리에 액세스하기 전에 Z80 읽기 또는 쓰기가 완료될 때까지 기다려야 합니다. 기계 사이클의 첫 번째 클럭 사이클 동안에만 Z80의 클럭을 중지합니다.[1]

초기 스펙트럼은 프로그래머인터럽트 벡터 테이블을 경합 영역에 속하도록 구성한 경우 기계 사이클에서 최대 하나의 경합 메모리 액세스가 발생한다고 가정합니다.이 경우 ULA는 비디오 주소 로드를 거부하고 표시되는 비디오 바이트는 프로세서가 읽던 대로 표시됩니다.이로 인해 디스플레이에 랜덤 노이즈, 즉 '눈'이 발생합니다.[1]

이 효과는 프로그래머의 의도적인 개입이[2] 필요한 정상적인 작동 하에서 발생하지 않았기 때문에, 특별한 그래픽 효과로서 일부 게임[어떤 게임]에서만 사용되어 매우 드물게 볼 수 있었습니다.[1]

모든 128kb 버전을 포함한 스펙트럼의 최신 버전은 버그를 수정합니다.[1]

서킷

ULA는 경합된 메모리 액세스 중에 버스 마스터가 되기 위해 Z80의 버스 요청/허가 메커니즘을 사용하지 않습니다.대신 Z80 클럭 입력의 높은 주기를 연장하여 모든 마이크로프로세서 활동을 중지합니다.이것은 버스 요청을 수행하는 것보다 우아하지는 않지만, 더 적은 Z80 클록에 대한 경합 메모리 액세스를 얻을 수 있습니다.이를 통해 ULA가 디스플레이 데이터를 미리 읽을 필요가 없어지며, 이는 전체 ULA의 혼잡한 회로에 이점이 됩니다.

ULA는 메모리 시스템 IC에 직접 연결되고 Z80은 직렬 전류 제한 저항을 통해 IC에 연결됩니다.이것은 Z80이 메모리를 구동하는 동안 ULA와 메모리가 서로 구동할 수 있게 해줍니다.삼원 버스 드라이버 IC 대신 저항기를 사용하면 회로 비용이 절감되지만 Z80, ULA 및 메모리 IC에서 더 높은 평균 I/O 핀 전류를 얻을 수 있습니다.

참고문헌

  1. ^ a b c d Awan, Hassan. "What Are Snow Bugs?". Home Claver. Admin. Retrieved 2022-01-29.
  2. ^ "ZX Spectrum ULA – SinclairFAQ – The Snow Effect". faqwiki.zxnet.co.uk. Retrieved 2018-09-13.

외부 링크