2024년 8월 25일 일요일

MMC/SD Drive V4 제작 #22 - MV 영상으로 SD 응답속도 테스트

SD카드를 Read/Write 할 때에는 컨트롤러에게 먼저 커맨드를 보내고 Ready 신호를 기다리게 됩니다.

그 후 Read/Write를 주르륵 해주는 거죠.

근데 데이터(파일)이 저장된 위치에 따라 응답속도에 편차가 생기게 됩니다.


MMC/SD에서 동영상 재생 기능을 처음 넣었던 때가 2009년 MMC/SD V2를 쓰던 시절이었는데요.

그 때는 동영상 저장용 파티션을 별도로 만들어서, SD카드의 연속된 메모리공간을 활용했습니다.

SD카드의 멀티섹터 Read 커맨드를 쓰면, 연속으로 데이터를 읽을 때 빠르게 처리가 가능하죠.


나중에 2015년 MMC/SD V3부터는 디스크 파티션에 일반 파일을 영상으로 처리할 수 있도록 구현이 되었습니다.

이 방법은 CPU에 굉장히 부담이 됩니다.

많은 클러스터로 쪼개진 파일을 처리해야 되는 것과 SD카드의 연속 읽기를 쓰지 못한다는 것 때문이죠.

사실 V3 설계 때에는 MV 플레이어는 계획에 없었는데요.

DSK 에뮬 때문에 클러스터 처리를 구현해보니, MV 플레이어도 가능성이 보이더라구요 ㅎ.ㅎ


처음 MV 플레이어를 만들었을 때에는 주로 8GB SD를 사용했구요.

2018년 V4에 와서는 16GB SD를 쓰다가 후기에는 32GB SD를 사용했습니다.


여러 종류의 SD카드를 쓰면서 알게된 것이 하나 있는데요.

용량이 늘면, 커맨드 응답도 느려지더라구요.

초기 코드는 샌디스크 8GB SD기준이었는데, 그 때는 커맨드 응답이 꽤 빨랐습니다.

이 코드가 32GB SD에서는 버티지 못해서, 결국 작년에 MV 플레이어 코드를 다 갈아엎었죠.


.

.

.


며칠전 알리에서 할인하는 SD 32GB를 3개 구매합니다.

빨간색+회색의 Sandisk Ultra UHS-I 모델입니다. 두둥~~




사진의 왼쪽 흰색+회색으로 된 SD가 구버전이구요. 오른쪽 빨강+회색은 신버전입니다.

둘 다 UHS-I, Class 10으로 거의 같은 속도입니다.

사실 구버전은 종류가 여러개 있는데요.

최대 속도가 80MB/s, 98MB/s, 100MB/s 였던걸로 기억하는데, V4에 번들된 SD는 80MB/s, 100MB/s 두 종류였습니다.

사진 아랫쪽의 삼성 EVO 32GB는 제가 최근 4년정도 계속 쓰던 거네요.


그럼 본론으로 넘어가서, 어제 택배로 받은 신버전 32GB SD에 기존 SD카드와 똑같이 파일들을 때려넣고 테스트 해봅니다.


드라마 도깨비의 영상으로 테스트해보았어요!


MMC/SD BIOS는 디버깅모드입니다. 동영상 재생 시, SD카드 커맨드의 응답속도가 PAC-V의 LED로 표시됩니다.

왼쪽부터 켜지는 LED바 1개가 PCM 샘플 1개를 의미합니다.

커맨드를 대기하는 동안 LED가 점점 켜지는거죠 ㅎ.ㅎ

결국 LED가 모두 꺼져있면 응답속도가 빠르고, LED가 많이 켜지면 응답이 느린 상태입니다.


아래는 삼성 EVO입니다.




아래는 샌디스크 구버전입니다.




아래는 샌디스크 신버전입니다.



위의 사진에서는 샌디스크 Ultra 신버전이 꽤 느린 것으로 보이는데요.

실제로 MV 재생을 해보면 타이밍을 놓쳐서 화면에 테어링도 생기고, 사운드도 끊어질 정도로 엉망이 됩니다 ㄷㄷ


여러 종류의 MV 파일로 테스트 했을 때의 응답 딜레이는,

삼성 EVO        -> 대부분 1개 또는 2개, 느린 경우는 6개까지 발생

샌디스크 구버전 -> 대부분 0개 또는 1개, 느린 경우는 9개 이상 발생

샌디스크 신버전 -> 대부분 2개 ~ 5개, 느린 경우는 9개 이상 발생


삼성 EVO가 가장 안정적이구요. (그래서 계속 쓰고 있었...)

샌디스크 구버전은 파일에 따라 가끔 테어링이 나는 경우가 생깁니다.

샌디스크 신버전은 사실상 재생포기 수준이네요 ㅎ.ㅎ


V4에서 빨강+회색의 샌디스크 SD를 쓰시려는 분은 참고하세요~

저는 이번에 구매한 것들 서랍에 쳐박아놨습니다ㅋㅋ


그럼, 이만...


PS. 나무위키에서 찾아보니 위의 SD에 대한 출시연도가 나오네요. (위키라서 틀린 정보일 수도 있습니다.)

제가 샌디스크의 구버전(흰색+회색), 신버전(빨강+회색)이라고 표현했는데, 모두 같은 해(2020년)에 출시되었군요.




2024년 7월 28일 일요일

역시나 멋진 파리 올림픽 2024

프랑스 애들은 원래 그래요.



.

.

.

유럽에 놀러가려면 독일, 이탈리아, 스페인, 스위스 쪽으로 선택하시길~ ㅎ.ㅎ


2024년 7월 24일 수요일

지난 20년 개발의 추억 #10 - SLT-X V1

월간 추억팔이 #10편이 나왔습니다~ ㅎ.ㅎ


지난 글은 아래 링크를 이용하세요!

https://sharksym.blogspot.com/2023/07/20-1.html

https://sharksym.blogspot.com/2023/08/20-2.html

https://sharksym.blogspot.com/2023/10/20-3.html

https://sharksym.blogspot.com/2023/10/20-4-mmcsd-drive-v3.html

https://sharksym.blogspot.com/2023/11/20-5-paramsx-r.html

https://sharksym.blogspot.com/2024/01/20-6-paramsx-r-v11.html

https://sharksym.blogspot.com/2024/03/20-7-audiofactory.html

https://sharksym.blogspot.com/2024/04/20-8-mmcsd-drive-v4.html

https://sharksym.blogspot.com/2024/06/20-9-xii-v.html



2009년에 만들어서 10년간 쓰던 확장슬롯이 있었습니다.

만능기판에 뜨개질로 만든 후 종이 테입으로 덮어놨는데, 10년이 흐르니 미라처럼 되었네요ㅋ



기본 4개의 서브슬롯과 I/O 슬롯 2개가 들어있죠.

저의 WSX, GT는 내부 SLOT 0-1 개조가 되어있어서, 이 슬롯의 /SLTSL 신호가 RSV핀으로 출력됩니다.

이걸 활용하면 서브슬롯 5개 + I/O 슬롯 1개로 사용할 수 있어요.

I/O 슬롯에는 뮤직모듈(Y8950)을 꽂으면 내장롬 실행을 막을 수 있어서 편합니다요 ㅎ.ㅎ


.

.

.

그렇게 시간이 흘러 주변기기가 많이 늘어나게 되었습니다.

2개의 확장슬롯을 써도 되겠지만, 상단슬롯에서 케이블이 삐져나오면 보기가 안좋거든요.

가끔은 기본슬롯(SLOT 1)을 써야하는 경우, 확장슬롯을 뺏다 꽂았다 하는 것도 귀찮구요.


뭔가 새로운 확장슬롯을 만들어야 하는 때가 되었습니다요~



하나의 마스터 보드(슬롯 1개)에 여러개의 슬레이브 보드(슬롯 3개)를 합체하는 방식으로 구상을 해보았어요.

마스터 보드에는 컨트롤 기능이 들어있구요. 슬레이브 보드는 신호 버퍼링 및 보든 연결 상태만 알려줍니다.

동작 모드는 연결된 슬레이브 보드의 갯수에 따라 기본값이 설정됩니다.


마스터 + 슬레이브 x 1 = 기본 확장슬롯 (서브슬롯 4개)

마스터 + 슬레이브 x 2 = 기본슬롯 + 확장슬롯 (서브슬롯 4개) + I/O 슬롯 2개

마스터 + 슬레이브 x 3 = 확장슬롯A (서브슬롯 4개) + 확장슬롯B (서브슬롯 4개) + I/O 슬롯 2개

... 이렇게요.


각 서브슬롯은 순서를 바꿔서 섞거나, /SLTSL 신호를 ON/OFF 가능합니다.

사용자가 매니저 프로그램을 통해 이 설정을 하게 되구요. 설정값은 플래쉬롬에 저장되어서 부팅할 때 자동으로 재설정되는 방식입니다.



당시에 오랫동안 고민해서 만들었는데, 지금 다시 봐도 머리가 어지럽네요ㅋㅋ


아래는 옆에서 본 10-SLOT 모드의 모습입니다.

보드마다 전원 LED가 따로 있어요. 흐...





그리고, 각 슬롯에서 입력되는 사운드는 개별로 ON/OFF 가능합니다.

여러개의 사운드 카트리지를 쓰다보면 이게 또 유용하거든요 ㅎ.ㅎ



.

.

.

이렇게 SLT-X V1을 만들어서 수개월을 써보니 여러가지 생각이 떠오릅니다.

프로그램만으로 슬롯 설정을 마음대로 바꿀 수 있는 건 좋은데, 이게 기기 외부에서는 전혀 설정값을 알 수가 없거든요.

일단 켜서 매니저 프로그램으로 진입해야 설정을 볼 수 있으니까요.

결국 본체 하나에 SLT-X 하나 붙박이로 쓰면 괜찮겠지만, 이걸 다른 기기에 옮겨서 꽂으면 최악의 경우 본체가 망가지는 상황이...ㅋ


참고로, SLT-X V1은 본체에서 출력되는 /SLTSL를 사용하지 않습니다.

이 신호를 무시한 채, SLT-X에서 신호를 따로 재생성합니다.

다르게 말하면 SLT-X가 본체의 PPI 역할을 똑같이 해주고 있습니다.

본체의 슬롯 상황을 잘 알고 쓰면 괜찮습니다만, 그게 힘드신 분들도 많을 거에요.


그리고 결정적으로, 본체의 DATA BUS에 양방향 버퍼가 있으면 사용이 불가능합니다.

버퍼 컨트롤을 본체쪽에서 하고 있어서, 외부의 SLT-X가 아무리 ㅈㄹ을 해도 방법이 없어요ㅋ

대우 아이큐2000, X-II 등등 대부분 MSX2에서는 못 쓴다능...


결국 이걸 다른 분이 쓸 수 있도록 제작하는 건 포기했습니다.

그냥 '머리속으로 상상 가능한 슬롯환경을 모두 구현해보자'라는 목표만 달성하는 걸로 마무리했네요.

그래도 만드는 건 잼났어요. 나중에 보급형(?) SLT-X V2가 나올 때까지 잘 썼습니다요~ ㅎ.ㅎ


그럼, 다음편에서 뵙겠습니다! ㅎ.ㅎ/