본문 바로가기

이글루스

sharksym's MSX World

검색페이지 이동

사이드 메뉴

이글루스 블로그 정보

SLT-Turbo 제작 #2 - I/O 프로세서

앱으로 보기

본문 폰트 사이즈 조절

이글루스 블로그 컨텐츠

SLT-Turbo 제작 #2 - I/O 프로세서

설명에 앞서 일단 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처리가 거의 딜레이없이 구동되도록 구현



그럼, 다음편에서 보아요~ ㅎ.ㅎ

궁금한 점 있으시면 댓글로 ㄱㄱㄱ


포스트 공유하기

썸네일
sharksym님의 글 구독하기
덧글 0 관련글(트랙백) 0
신고
맨 위로
앱으로 보기 배너 닫기

공유하기

주소복사

아래의 URL을 길게 누르면 복사할수있습니다.

http://sharksym.egloos.com/m/5374436
닫기

팝업

모바일기기에서만 이용이 가능합니다.
운영체제가 안드로이드, ios인
모바일 기기에서 이용해주세요.

덧글 삭제

정말 삭제하시겠습니까?

비밀번호 확인

게시글 신고하기

밸리 운영정책에 맞지 않는 글은 고객센터로
보내주세요.

신고사유


신고사유와 맞지 않을 경우 처리되지 않을 수 있습니다.
저작권 위반/명예훼손 등은 고객센터를 통해 권리침해
신고해주세요.
고객센터 바로가기