Sega 32X에 하드웨어 동기화 프리미티브 없이 SMP Linux 포팅한 개발자, HN서 SH2 버스 구조 논쟁 벌어져
- 개발자 cakehonolulu가 Sega Genesis 32X 애드온에 SMP 지원 Linux를 포팅해 GitHub에 공개함(linux_ports)
- 32X에는 Hitachi SH2 코어 2개와 68000 CPU 1개가 있고, 하드웨어 동기화 프리미티브가 없어 M68K가 UART 포워딩과 두 SH2 간 IPI 전달을 담당하는 INTC 마스터 역할을 함
- HN 댓글에서 Mask of Destiny가 SH-2가 카트리지 영역에 쓰기(write)가 불가능하다는 스프라이트마인드 포럼 문서를 근거로 SSF2 확장 매퍼로 카트를 RAM처럼 쓰는 방식에 의문을 제기함
- 저자는 실제로는 32X의 버스 중재 ASIC 핀 일부가 연결되지 않아 68000의 /UWR, /LWR이 315-5818 핀에 물려 있어 카트 PSRAM이 아니라 32X SDRAM을 주소 지정하는 구조라고 설명함
- 저자는 앞서 Atari Jaguar에도 Linux를 포팅한 적이 있고 그 결과가 Hackaday와 Tom's Hardware에 소개된 바 있음
Hacker News 의견들
프리텐서 없이도 SMP 되는 Linux 올린 거 대단하네. 근데 하나는 10 bogomips, 다른 하나는 20 나오는 이유 뭐임?
시리얼 포트로 터미널 접근 가능함? Sega CD 쓰면 RAM도 더 늘고 68k도 하나 더 빨라지는데 활용 여지 많아 보임
UART가 4800bps로 캡되어서 SH2가 직접 M68K I/O 포트 못 건드림. M68K가 UART 포워딩하고 두 SH2 사이 IPI 전달하는 INTC 마스터 역할까지 하는 구조라 이미 복잡함. 키보드 프로토타입 있는 건 아는데 쓰는 사람 없을 것 같아서 드라이버 안 만들었음
2000년대 초에 아무 컴퓨터 비슷한 거에 Linux 부팅시키던 그 시절 생각나네 ㅋㅋ Doom을 X에서 돌리기 밈이랑 똑같은 흐름임
SH-2가 카트리지 영역에 쓰기가 안 된다는 걸로 아는데, 그러면 확장 SSF2 매퍼로 카트를 RAM처럼 쓰는 건 불가능한 거 아님? 실제 하드웨어에서 테스트해본 거임 아니면 에뮬레이터에서만?
소프트웨어 상에서 테스트한 거고, 32X 쪽 버스 중재하는 ASIC 핀 일부가 연결 안 돼 있음. 68000의 /UWR, /LWR이 315-5818 쪽 핀에 물려있다고 생각했는데 그러면 카트 PSRAM이 아니라 32X SDRAM 주소 지정하는 거라 상황이 달라짐. XIP 쓰면 될 것 같긴 한데 Busybox 전체는 못 넣어도 작은 프로그램 정도는 가능할 듬
SuperH 아키텍처는 THUMB이랑 비슷한 느낌이야. ARM이 THUMB 만들 때 Hitachi 특허 라이선스까지 받았다더라. 16비트 명령어랑 2-오퍼랜드 방식 쓰는 거 공통점이고 브랜치 딜레이 슬롯 같은 그 시절 RISC 잔재도 그대로 있음
2-오퍼랜드 인코딩이 그렇게 특이한 설계는 아닌데 특허까지 걸려있었다는 게 신기하네. x86 논SIMD 명령어 대부분도 2-오퍼랜드잖아
Peterson's algorithm 얘기 나오니까 Lamport의 fast mutex 논문도 생각나네, 관련 있는 알고리즘임