설명에 앞서 일단 SLT-Turbo 겉모습부터 보시죠~ ㅎ.ㅎ
아래는 터보 보드입니다. 두장이 아니라 앞뒷면 사진이니 착오없으시기를...ㅋ
서브슬롯 보드와 합체 할 때 부품의 간섭이 생기지 않도록 머리를 많이 굴렸습니다.
보드 그리는데 한참 걸린 것 같아요 ㅠ.ㅠ
서브슬롯 보드를 합체한 모습입니다.
/SLTSL, /IORQ를 ON/OFF 할 수 있는 스위치가 있구요.
슬롯 SOUND 출력을 헤드폰 Left/Right로 나누어 출력할 수 있습니다.
본체의 SOUND IN으로 입력하거나 헤드폰 출력으로 따로 출력가능합니다. 물론 강제 모노도 가능하구요.
사용하려면 외부 DC 5V 어댑터가 필수입니다. 3A 정도면 힘이 남아돌겠죠?
처음부터 위아래 보드를 딱 붙이면 디버깅이 힘드니까, 분리할 수 있도록 핀헤더 소켓을 사용했습니다.
[본론]
대충 구경하셨나요? 그럼 I/O 프로세서 설명으로 넘어갑니다 ㅎ.ㅎ
SLT-Turbo는 MSX 본체가 아닌, 본체의 CPU를 고속으로 바꾸는 효과를 내는 'CPU 가속기'의 형태입니다.
메인 BIOS, 메모리 등의 고속으로 구동하는데 필요한 주변기기들은 모두 SLT-Turbo 보드에 내장됩니다.
근데 외부 기기는 본체 내부의 주변장치를 접근 할 수가 없죠.,
그래서, 본체에 내장된 CPU를 SLT-Turbo의 버스 아비터(Arbiter)와 결합해서 I/O 프로세서를 만듭니다.
"본체에 SLT-Turbo를 꽂고 동작하는 것" VS "본체를 고속 CPU로 개조 후 확장슬롯을 연결한 것"
사용자가 이 두가지 환경의 차이를 느끼지 못하도록 만드는 것이 I/O 프로세서의 역할인거죠.
구현방식은 여러가지가 있겠지만... 1차구현은 간단한 방식으로 시작해봅니다~
I/O가 처리되는 과정을 순서대로 적어보면 이렇게 됩니다.
1. 터보 보드의 CPU가 I/O 명령이 수행되면, 아비터가 CPU /WAIT를 유지하고 I/O 요청을 걸어놓습니다.
2. 본체의 CPU는 아비터에 걸린 I/O 요청이 있는지 폴링(Polling)하면서 대기합니다.
3. 본체의 CPU는 I/O 요청을 처리 하고 결과를 아비터로 돌려줍니다.
4. I/O가 완료되면 아비터는 BUS에 전달받은 데이터를 로딩하고 터보 보드의 CPU /WAIT를 해제합니다.
I/O 명령 시작부터 처리완료까지 시간이 꽤 걸릴거라고 예상가능하죠?
지금은 절뚝거리더라도 일단 달려야 되는 상황이니 이해해주세요.
뭔가 동작하는 상태를 만들어야 보드를 동작을 테스트할 수 있으니까요~ 흐흐...
그럼, 한번 달려봅시다~
터보 보드의 Z80 CPU에 3.58MHz 클럭을 연결하고 구동합니다.
SLT-Turbo쪽 슬롯 설정은 아래처럼 초간단 MSX2+ 모드로 해줍니다.
슬롯0 = MSX2+ BIOS
슬롯1 = SLT 서브슬롯
슬롯3 = RAM 64KB
그리고, I/O 프로세서는 아래의 장치들을 본체에서 대신 구동합니다.
PPI (A8H SLOT 제외), VDP, PSG, RTC
아래 영상을 보시면 어떻게 동작하는지 볼 수 있습니다.
영상에 대한 설명 나갑니다~
00:00 Host MSX, Booting
-> 기기를 연결하고 본체를 부팅합니다.
00:23 SLT-Turbo, Booting
-> 임시로 제작된 툴을 이용, SLT-Turbo를 MSX2+모드로 부팅합니다.
01:22 SLT-Turbo, PCM Play with Host Keyboard
-> SLT-Turbo쪽의 V4를 이용하여 44.1Hz PCM을 재생합니다.
PCM Player는 512bytes 재생할 때 마다 ESC 키를 체크합니다.
초당 86번의 PPI를 액세스합니다만, 부하가 작아서 귀로 느끼기는 힘드네요.
03:07 SLT-Turbo, Video Play with Host VDP & Keyboard
-> SLT-Turbo쪽의 V4로 비디오를 재생합니다.
Video Player는 대부분의 시간을 VDP의 VRAM, 팔레트를 처리하는데 소진합니다.
I/O 프로세서의 처리시간이 얼마나 부담이 되는지 처절하게 느낄 수 있어요.
(사실 생각보다 빠른 듯해서 좀 놀랐습니다ㅋㅋ)
04:18 Host MSX, Re-booting
-> 본체를 재부팅합니다.
04:45 Host MSX, Video Play
-> 본체로 비디오를 재생해봅니다. 정상속도의 영상과 비교하기 위함입니다~
마지막으로 CPU 속도 테스트를 해봅니다.
FOR 루프를 구동하는 것이라 I/O 딜레이가 크게 부담되지않습니다.
[결론]
SLT-Turbo의 제작목표
-> 사용자가 외부에 CPU가 있다는걸 눈치채지 못하도록 자연스러운 고속 CPU 환경을 만드는 것
I/O 프로세서의 목표
-> 터보 보드의 I/O처리가 거의 딜레이없이 구동되도록 구현
그럼, 다음편에서 보아요~ ㅎ.ㅎ
궁금한 점 있으시면 댓글로 ㄱㄱㄱ