ThrottleBlaster - 시피유 클럭 다운장치(펜티엄MMX, 펜티엄2~3, 애슬론XP 등), 라즈베리파이 피코를 이용한 장치
도스박물관 카페의 모회원님께서 테스트를 요청하셔서 택배로 받아 테스트해보았습니니다.
물건은 ThrottleBlaster 라는 것으로
펜티엄MMX, 펜티엄2~3, 애슬론XP 등 의 시피유의 실제 클럭을 감소시키는 장치입니다.
프리셋 예) 4.77~133 MHz
혹은 수동 설정으로 1 MHz 씩 변경도 가능하고 PWM주기 변경을 통해 더 세밀한 속도 조절이 가능합니다.
이 장치는 CPU의 STPCLK# 에 직접 개입하여 속도를 조절하는 것으로
아래 사이트에 회로와 거버파일 및, 펌웨어가 모두 공개되어 있습니다.
https://github.com/scrapcomputing/ThrottleBlaster
GitHub - scrapcomputing/ThrottleBlaster: A Turbo circuit with a MHz display that can slow down the CPU speed
A Turbo circuit with a MHz display that can slow down the CPU speed - scrapcomputing/ThrottleBlaster
github.com
라즈베리파이 피코에 펌웨어를 입히고,
회로와 거버파일을 이용해 만든 기판을 설치하는 것이 기본입니다.
이렇게 말하면 이걸 제작하라고? 할 수 있는데
다행히 키트 자체는 제품명으로 검색하니 판매자가 나옵니다.
납땜만 조금 할줄 안다면 충분히 제작이 쉬워보였습니다.
더해서
이 장치는 시피유속도에 민감한 게임/프로그램을 위한 것으로 아무래도 목적자체가 펜MMX~펜티엄3에 어울리고 또 그정도 시절의 모델에 맞추어져 있습니다.
가령 STPCLK#에 직접 개입하여 속도를 줄이는데 이 핀이 없는 486과 같은 시피유에는 사용할 수가 없습니다.
커뮤니티를 보니 펜티엄4도 마찬가지이고 최근에 펜티엄4 이상의 경우엔 CPUSPD 라는 획기적인 시피유 클럭 다운 프로그램이 나왔더군요.
https://www.vogons.org/viewtopic.php?t=74359
CpuSpd - A Hardware Based CPU Speed Control Utility for DOS/Win9X Retro Gaming \ VOGONS
One not so obvious features of CPUSPD is that it allows you to set the voltage of the CPU. By lowering the voltage when running at lower multiplier will reduce power consumption and heat generated by the CPU, allowing it to reduce fan speed and run quieter
www.vogons.org
펜4 이상에서 도스게임을 구동하는데 속조조절이 필요하다 하는 경우에는 참고하시고 특히 ODCM기능이 본문에 소개하는 장치와 유사한 기능을 합니다.(혹은 THROTTLE 라는 별도의 유틸리티와 비슷함.)
아래 보내주신 장치 사진입니다.
기판에 로터리인코더와 4자리 7세그먼트 디스플레이가(LED) 연결되어 있고.
이 기판은 피코와 연결되어 있습니다.
깃허브 사이트에 잘 나와 있습니다만
아래 사진에서
좌측부터 컴퓨터와 시리얼연결하는 곳, 스위치3, 스위치1, Pot1(포텐셔미터/가변저항), 그다음이 STPCLK입니다.
STPCLK 이 헤더와 컴퓨터 마더보드의 시피유소켓의 STPCLK# 핀이 물리적으로 연결됩니다.
아래사진도 좌측부터 STPCLK, 그리고 그 옆의 4핀이 전원(5V, GND), 그리고 그 위가 피코의 USB연결부 입니다.
4핀 전원은 컴퓨터 파워의 4핀이나 FDD전원 케이블에서 5V와 GND를 끌어오면 됩니다만
시피유클럭을 조절할 컴퓨터에 USB단자가 있다면 거기에 피코의 USB포트와 연결해도 무방합니다.
그리고 맨 우측헤더는 LED와 연결하는 헤더입니다.
우측 사진은 4핀 전원헤더의 뒷면입니다.
컴퓨터 파워의 단자에서 전원을 끌어올 경우 아래를 참조하시기 바랍니다.
빨강이 5v 검정이 gnd입니다.
노랑 12v을 연결하면 피코고 기판이고 타버리니 조심
아래는 좌측부터 LED 헤더, 점퍼1, 점퍼2, 점퍼3, 그리고 프리셋 점퍼입니다.
프리셋 점퍼는 8개로 4.77/8/10/25/33/66/133/MAX 로 시피유 속도가 조절됩니다.
점퍼는 장치를 로터리 인코더/1버튼/2버튼/가변저항(포텐셔미터) 로 연결하느냐를 바꾸는 점퍼입니다.
점퍼1 점퍼 2
닫기 오픈 - 로터리
닫기 닫기 - 2버튼 (스위치 3과 스위치1 이용)
오픈 오픈 - 1버튼 (싀위치 1 이용)
오픈 닫기 - 가변저항(포텐셔미터)
점퍼3는 로터리 회전방향 변경을 담당합니다.
깃허브에 로터리나 버튼 조작법이 있는데
버튼이나 가변저항은 사용법이 복잡해서 로터리가 가장 편리합니다.
로터리 기준으로
기본 상태에서는 프리셋모드로 돌리면 8개의 프리셋이 변화하고
살짝 누르면 수동모드가 되어서 1 MHz 씩 변경이 가능해집니다.(다시 살짝 누르면 프리셋모드로 돌아감.)
길게 누르면 MHz 편집 기능이 나타나고 여기서 클럭 설정 후 다시 살짝 누르면 PWM 편집을 할 수 있고 마친 후 다시 살짝 누르면 저장됩니다.
각 편집모드에서는 길게 누르면 캔슬됩니다.
단 MHz 편집모드에서 최대 MHz 상태에서 길게 누르면 리셋 모드로 들어가고 리셋 모드에서 길게 누르면 기본설정으로 리셋됩니다.
*어째서 인지 보내주신 물건의 경우 MHz 편집 기능이후 저장이나 캔슬을 하면 작동이 멈추고 PWM편집으로 넘어가지 않은 현상이 있었습니다. 때문에 펌웨어를 다시 깔아볼까 했는데 제 물건이 아닌지라 이건 패스하였습니다. PWM의 경우 시리얼을 통한 통신으로 해결 가능.
위의 문제는 2024년 12월 11일자 펌웨어 최신인 0.8B 버전의 버그로 보입니다.
이전 버전인 0.8로 다시 해보니 프리셋의 편집과 세이브가 정상적으로 작동합니다.
로터리 기준으로
프리셋모드에서(편집 기능은 프리셋모드에서만 작동) 편집할 프리셋에서 길게 로터리인코더를 누릅니다.
가령 초기 디폴트셋팅의 MAX수치인 200을 편집하고 싶다고 할때 프리셋을 200에 두고 로터리인코더를 길게 눌러줍니다.
그러면 cpuf 메시지가 뜬 다음 수치를 고칠 수 있게 되는데 희한하게도 위로 상향해 로터리를 돌리다보면 어느순간 50단위 이상으로 올라가는데 내릴 때는 1MHz단위로만 내려가더군요.(올릴때 50 이상으로 올라가면 잠시 멈추고 올리면 다시 1단위로 올라갑니다. 깃허브에도 이거에 대한 설명은 없어서 클럭을 맞출때 수고가 좀 필요합니다.
여하튼 여기서 저는 1.4Ghz 시피유를 쓰므로 1400으로 맞춘 후 로터리 인코더를 짧게 눌러줍니다.
그러면 DONE 메시지와 함께 셋팅이 저장됩니다.
이후 편집한 프리셋의 MAX 수치는 1400이 됩니다.
그리고 이경우 프리셋의 자동으로 늘어나더군요.
본래의 디폴트 프리셋은 4 8 10 25 33 66 133 200(MAX) 이렇게 8개인데
4 8 10 25 33 66 133 450 733 1400(MAX) 이렇게 450과 733이 추가로 늘어나게 됩니다.
역시 450과 733으로 맞출 경우 속도가 다운되고 1400은 컴퓨터의 최대속도가 됩니다.
*전체 범위는 0~5000으로 5000MHz가 넘어가면 다시 1로 돌아갑니다.
그리고 프리셋 편집모드에서 다시 길게 누를경우 res메시지가 뜨고 여기서 짧게 누르면 ESC가 되면서 셋팅이 적용은 되는데 저장은 되지 않습니다. 이경우 전원을 껏다켜면 편집한 부분이 사라지고 이전의 셋팅으로 돌아갑니다.
마지막으로 res메시지가 뜬 이후 여기서 길게 누르면 DONE메시지(혹은 안뜨는 경우도 있더군요.) 디폴트 셋팅으로 초기화 됩니다. 즉 프리셋의 MAX수치가 200으로 돌아가고 나머지 프리셋들도 디폴트 셋팅으로 돌아갑니다.
PWM편집 모드는 0.8B부터 적용되는 모양인데 0.8B에서 편집모드만 들어가면 먹통이 되어서(전원을 껏다켜면 정상) 이건 어떻게 할 수가 없더군요. 펌웨어의 버전업을 기다려봐야할 것 같습니다.
다른 모드는 깃허브 사이트에 잘 나와 있으니 참조
그리고 리셋헤더 2핀이 한쌍이 있는데
한쪽은 컴퓨터 본체의 리셋과 연결, 다른 한쪽은 컴퓨터 케이스의 리셋버튼과 연결합니다.
이렇게 연결하고 컴퓨터 리셋을 누르게 되면 ThrottleBlaster의 속도가 최대속도로 변경되면서 컴퓨터가 리셋되게 됩니다.
기본 사용법을 알아냈으니 이제 설치
먼저 메인보드의 뒷면 혹은 슬롯1인 경우에는 시피유의 케이스를 벗겨서 뒤쪽을 납땜해야 합니다. 물론 라이저카드도 마찬가지입니다.
저는 440BX보드에 라이저카드를 통해 펜티엄3-S 1.4GHz(투알라틴) 을 사용 중이므로 아래와 같이 납땜을 했습니다.
아래 사진의 납땜 포인트는 소켓의 STPCLK# 에 해당하는 곳으로
깃허브에 각 소켓별로 포인트가 잘 나타나 있으니 참조하세요.
제가 사용한 전선은 특수코팅된 배선용 전선으로 이게 없는 경우 IDE케이블에서 선하나를 잘라내 사용하시면 됩니다.
캡톤테이프로 마감하고 조립.
배선에는 일반 전선을 남땜해 점퍼로 만들어두었습니다.
굳이 이 시피유를 쓰는 이유는 펜3에서 가장 빠른 시피유이기 때문입니다.
이게 되면 아래 펜3 모델이나 펜2는 당연히 된다는 말이니까요.
컴퓨터에 납땜하는 것은 여기가 끝.
물론 키트를 납땜하고 펌웨어를 씌워야 겠지만 ...
아래는 컴퓨터와 점퍼선들을 연결한 사진
전원은 440bx의 USB와 피코를 연결해 해결
(만약 시피유 속도를 조절한 메인보드에 USB가 없다면 파워에서 끌어와야 합니다. GND가 ThrottleBlaster와 컴퓨터가 일치해야하기 때문에 별도의 어댑터나 다른 본체나 어댑터의 USB로 전원을 끌어오면 작동하지 않습니다.)
USB 아래에 헤더에는 STPCLK에 납때한 점퍼를 끼우고.
좌측 아래에는 컴퓨터의 시리얼(9핀)과 연결합니다.
시리얼과 연결시 컴퓨터 시리얼 포트의 RX는 ThrottleBlaster의 TX로 TX는 ThrottleBlaster의 RX로, 그라운드는 그라운드끼리 연결합니다.
시리얼 단자 핀아웃은 아래 참조 RXD와 TXD, GND만 이용하시면 됩니다.
*시리얼단자의 연결은 편의성 문제라 필수는 아닙니다.
아래가 컴퓨터의 시리얼 포트와 ThrottleBlaster 를 3개의 점퍼선으로 연결한 스샷.
왜 시리얼은 필수가 아니고 편의성 부분인지는 후술.
여기까지 연결했으면 이제 본체에 전원을 켭니다.
기본적으로 처음 켜면 MAX수치(클럭편집을 하지 않았다면 200) 으로 나오게됩니다.
여기서 나오는 200MHz는 프리셋의 맨 마지막 최대수치 즉 미리 설정된 프리셋의 최대스피드로 이 수치로 속도가 조절되는 것이 아니라 MAX 수치가 단지 200으로 표현되었을 뿐입니다.(맨 마지막 프리셋의 경우에만 해당함.)
즉 제가 테스트한 펜3는 1.4Ghz인데 지금 아래 사진처럼 200이라고 해서 200으로 다운되는게 아니라 1.4GHz로 작동하고 있습니다. 여기서 더 내려갈 경우 속도가 조절됩니다.
단 수동으로 200을 맞출 경우 정말 200으로 클럭이 내려갑니다. 최대수치표기는 8번째 프리셋만 이에 해당합니다.
아래가 4.77로 프리셋을 맞춘 것이고 수동으로 1MHz로 맞춘 스샷.
그리고 수동의 경우 0도 맞출 수 있는데 이 경우 컴이 일시정지됩니다.
0인 상태에서 벤치를 돌려보니 돌아가긴 하더군요.
아래는 벤치마크 결과입니다.
도스용 시피유 밴치프로그램인 탑벤치를 사용하였습니다.
https://dosbenchmark.wordpress.com/
TOPBENCH
A benchmark tool for PC retrocomputing
dosbenchmark.wordpress.com
https://github.com/MobyGamer/TOPBENCH
GitHub - MobyGamer/TOPBENCH: The Oldskool PC Benchmark
The Oldskool PC Benchmark. Contribute to MobyGamer/TOPBENCH development by creating an account on GitHub.
github.com
결론부터 말씀드리면
정말 XT급의 속도를 낼 수 있으면서도 그 이하의 속도도 낼 수 있습니다.
다만 프리셋의 4.77MHz로 맞췄다고 이게 당시 XT의 속도와 동일한 것은 아닙니다.
클럭은 맞춰지긴 하는데 펜티엄3의 IPC가 사실 XT 시절 보다 더 좋은 것이다보니 나타나는 현상입니다.
테스트는 FSB 133과 66 그리고 133에서 L1캐쉬를 오프시켰을때를 두고 비교하였습니다.
아래는 FSB 66 설정에서 속도를 1Mhz로 맞췄을 때의 벤치결과입니다.
4.77프리셋이 아니라 1로 했을때 XT의 속도와 비슷해지는 벤치결과입니다.
이건 FSB133도 마찬가지로 1MHz로 설정했을때 4.77MHz의 벤치와 비슷해집니다.
아래는 FSB66에서 프리셋 4(좌측), 수동으로 4MHz로 설정한 스샷
아래는 FSB133에서 프리셋 4(좌측), 수동으로 4MHz로 설정한 스샷
스코어를 보시면 FSB66보다 같은 설정에서 더 높은 벤치결과가 나옵니다.
아래는 FSB66에서 수동으로 3MHz 설정
아래부터는 프리셋 2부터 8까지의 결과입니다.(8 - 10 - 25 - 33 - 66 - 133 - 200(최대))
아래는 FSB133에서 수동으로 3MHz 설정
역시 66보다 같은 설정에서 스코어가 높습니다.
아래부터는 FSB133의 프리셋 2부터 8까지의 결과입니다.(8 - 10 - 25 - 33 - 66 - 133 - 200(최대))
역시 FSB66보다 같은 설정에서 성능이 더 높습니다.
아래 벤치는 FSB133에서 L1캐쉬를 끝 결과물입니다.
우선 펜티엄2나 3는 L1캐쉬를 끄면 486 sx급과 386 사이의 속도가 나오는데
역시 최대 설정(200)에서 벤치결과를 보면 아래처럼 486sx 25MHz와 비슷한 결과가 나옵니다.
L1캐쉬오프를 사용하는 이유는 아래 처럼 1MHz로 설정할 경우 결과물이 80C88 4MHz 라는 결과물이 나오게 되는데
이게 XT보다도 느린 속도가 됩니다. 나온 스코어도 0이죠.
아래는 3MHz로 설정한 벤치, 스코어는 1 입니다.
스코어 3~4정도가 XT속도라고 봅니다.
아래는 8/10/25/33/66/133 의 벤치결과입니다.
FSB66/133보다 확실히 떨어지는 결과입니다.
여기까지만 확인하신다면
FSB와 L1캐쉬 오프 와 조합해 사용하면 XT이하급 성능부터 본래의 최대성능까지 아주 세밀하게 속도조절이 가능한 것을 알 수 있습니다. 개인적으로 프리셋보다 수동조절(1MHz)이 굉장히 마음에 들고, 후술할 시리얼과의 조합을 사용하면 더 세밀한 조정도 가능합니다.
아래는 게임테스트
*ThrottleBlaster의 특징은 게임 실행상태에서도 얼마든지 속도조절이 가능하다는 점입니다.
단 창세기전 같은 게임은 제외 - 오류가 남.
*창세기전에서는 본게임에서는 속도조절을 해도 정상인데 오프닝 이후 첫화면이 나오는 부분에서 속도를 조절하면 오류가 뜹니다.
1.스트라이커 - XT 시절의 헬기게임입니다.
아래 영상은 캐쉬오프상태에서 프리셋을 4.77MHz부터 최대로 올리며 테스트한 영상입니다.
영상을 보시면 초기에는 조금 느린듯 하다가 갈수록 빨라짐을 볼 수 있습니다.
아래 영상은 캐쉬오프 상태에서 수동으로 클럭을 1MHz부터 시작해 증가시킨 영상
플레이 할 수 없을 정도로 느려졌다가 빨라지면서 할만해집니다.
2. 협영기
펜3에서는 이동자체가 너무 빨라져 제대로 할 수 없는 게임입니다.
프리셋을 4.77부터 조절해본 영상입니다.
3. 프린세스메이커2
프린세스메이커2는 실기기준으로 80Mhz가 넘어가는(펜티엄) 시피유에서 이동시 마음대로 움직이는 버그가 있습니다.(한글판만 해당)
아래는 최대스피드에서 버그가 나타나는 영상.
아래는 속도조절로 이동버그를 없애는 과정의 영상
4. 창세기전1
창세기전1은 오프닝과 첫화면, 본게임마다 시피유 속도와 그래픽카드의 베사호환(유니베사)여부에 따라 달라지는 골때리는 게임입니다.
결론적으로 ThrottleBlaster 로도 불안한 게임입니다.
추가 - 재테스트 결과 안정적으로 속도조절 가능합니다.
아래는 최대스피드로 시작했다가 본 게임에서 최적 속도를 찾아가는 과정
오프닝과 첫화면은 적당하지만 본 게임에서 너무 빨라서 속도를 조정하는 과정입니다.
하지만 본게임에서 적당한 속도가 25~33Mhz인데 이 속도로는 또 첫화면에서 지나치게 버벅입니다.
추가 - 이 테스트 당시 AGP그래픽카드로 했는데 이 카드에 문제가 있었더군요. 정상작동시 25~33MHz에서도 첫화면이 정상적으로 구동됩니다.
아래영상이 33MHz에서 첫화면이 버벅이는 영상
-제네시스라는 제목이 뜨는 속도를 보시면 됩니다.
추가 - AGP 그래픽카드의 문제로 정상작동을 시키니 제목이 뜨는 속도도 정상으로 나왔습니다. 아래 영상은 무시해주세요.
하지만 어느정도 보완은 가능한데 수동으로 33MHz로 맞춘 다음 PWM 주기를 1로 설정하는 경우 첫화면에서 조금 빨라집니다.
추가 - AGP 그래픽카드의 문제로 정상작동을 시키니 제목이 뜨는 속도도 정상으로 나왔습니다. 아래 영상은 25~33MHz에서 조금 더 속도를 빠르게 하는 예시 정도로 참고해주세요.
창세기전1의 경우 최대스피드에서 UNIVESA 라는 유틸리티가 호환되는 카드가 있어야 본 게임에서 제대로된 속도가 나옵니다.
때문에 예전부터 온갖 속도조절프로그램도 써보고 직접 486과 펜1을 구해보았지만 베사유틸 호환없이는 당시 실기로도 속도조절이 어려운 게임이니 참고하세요. 사실 베사유틸 호환 그래픽카드는 ISA카드라면 어지간하면 호환되고 PCI도 있긴합니다만 하필 제가 테스트 한 본체의 엔비디아나 부두그래픽카드는 이게 호환이 안됩니다.
하지만 ET4000을 단 다른 본체는 호환이 되어서 속도조절 없이 최적의 속도로 잘 실행됩니다.
일단 베사유틸과 호환되지 않는 상황에서는
ThrottleBlaster 로는 33MHz에서 PWM을 1로 설정하는 것이 최적인 걸로 보입니다.(첫화면 제네시스 로고부터 느려지지만 본 게임에서는 적절)
추가 - 25MHz 에서 PWM을 1로 설정하는 것과 비교해서 적당한 것으로 적용해보세요. 게임 실행 후 제목에서 느린 결과물은 AGP 그래픽카드의 문제 때문이었습니다.
그 다음으로 기기의 문제인지 펌웨어의 문제인지 PWM편집을 로터리만으로는 할 수가 없어
*해당 문제는 설치한 펌웨어(0.8B 버전)의 버그로 보입니다. 그 이하 버전은 PWB편집을 로터리나 버튼으로 할 수가 없음.
이걸 시리얼 포트로 통신을 통해 클럭과 함께 적용하는 방법입니다.
컴퓨터와 시리얼 연결 후 도스에서 Kermit 로 통신을 합니다.
그리고 아래와 같은 형식으로 실행하면 적용이 됩니다.
kermit set port COM1, set speed 9600, output F4.77P8\13
COM1은 시리얼 포트 번호, 통신속도는 9600으로 두면 되고
F뒤의 숫자가 클럭, P뒤의 숫자가 PWM의 주기입니다. /13는 캐리지 리턴 문자라고 되어 있습니다.
신경쓸것은 클럭과 PWM주기로, PWM주기는 짧은 수록 빨라지고 길수록 느려집니다. 범위는 1~256
아래는 실제 실행한 장면.
실행후에는 LED의 숫자도 변경됩니다.(이때 ThrottleBlaster 수동모드로 변경됩니다.)
ThrottleBlaster 깃허브에서는 이 기능을 이용해 게임마다 배치파일을 만드는 것을 예시로 말해주었습니다.
결론
- 소켓 뒤를 납땜해야하는 부담만 넘기면 정말 좋은 솔루션.
- 위의 게임외에도 다른 속도에 민감한 게임과 프로그램도 돌려보았지만 문제없이 잘 됩니다. 펜MMX ~ 펜3과 조합하면 XT~486급을 대체할 좋은 솔루션입니다.
추가 테스트 - 도스 속도조절유틸인 THROTTLE를 적용하고 ThrottleBlaster 를 조작(MAX상태에서는 괜찮습니다.) 할 경우 컴퓨터가 멈춥니다.
글 읽어주셔서 감사합니다.