용량 늘리고 싶으면 저 256 data = 1KByte 써있는 박스 한줄씩 늘릴때마다 1KByte를 늘릴 수있다
하나의 메모리 셀에 꽉꽉 우겨담을 수 있으니까 재밌는듯
메모리 만드는거는 팩갤에서도 많이 봤지만 직접 해보니까 머리 아프면서도 재미있네 ㅋㅋ
데이터 쓰는건 지금 2틱당 한번만 쓸 수 있는데 1틱당 한번이 될것같기도 하고 안될것 같기도 하고 좀더 궁리좀 해봐야겠음
1틱당 한번으로 바꿀 수 있다면 대신에 레이턴시는 좀더 길어질것 같네
주소1에는 데이터1
주소2에는 데이터2
...
주소N에는 데이터N
을 쭈우우욱 써보는 움짤
메모리는 개추
오 이제보니까 이거 인덱스가 아이템 번호구나 재밌네
그렇게 보니깐 읽는부분 조합기도 되게 적게썼네
https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=54761&page=18
이거 응용인가?
ㅇㅇ 인덱스를 256으로 나눈 값으로 어떤 조합기 쓸지 결정하고있고, 256으로 모드한 값의 아이템으로 저장하고 있음
저거 응용맞음 ㅋㅋ 읽을때는 원하는 인덱스에 하는 아이템 신호에다가 -21억을 더하고, 그래서 0보다 작은 값만 통과시키게 한 다음 다시 21억을 더해서 복구하는 식으로 하고있음. 그래서 메모리에 저장할 수 있는 데이터는 양수만 되긴 함
이항연산 할거 고려해서 읽는부분만 두개로 늘리면 괜찮겠다
원래는 쓰기과정에서 1틱은 -21억 입력해서 초기화하는데 쓰고 그 다음 틱에 데이터를 입력하도록 해서 쓰기에 2틱을 쓰고있었는데, 이거 좀 개량해서 값 읽는부분을 하나 더 늘려서 -21억을 더하는게 아니라 원래값만큼 빼고 새로운 값만큼 더하고 해서 1틱만에 처리 가능하도록 개량은 했음(대신 레이턴시가 1틱 늘어났지만) 값 읽는 부분 늘리는건 걍 무지성으로 늘릴 수 있을듯
근데 이건 뭐 메모리에 해당하는거라서 따로 읽는 부분을 더 늘릴필요는 없을것같고 CPU 구현하는데 이항연산으로 쓰는 용도라면 나중에 레지스터파일 구현할 때 더 최적화가 가능할 것 같음
아 이거 좀 비슷하게 모방해서 인덱스 사용 방식만 인코딩된 값으로 해서 한번에 32개씩 읽고 쓰면 점곱셈같은거 계산하기 좋을것같은데
아 아니다 그냥 한번에 받아오는게 되니깐 시작 인덱스랑 끝 인덱스만 지정해주면 되겠구나 신호 하나 절반으로 쪼개면 0부터 65535 사이에서 구간 잡는것도 가능하네
구조가 완전 SIMD 최적화인것같은데? 가지고놀기 좋겠다
읽기 늘려서 SIMD최적화하는건 괜찮을듯
어드레스를 조합기 단위로 움직이는게 아니라 바이트 단위로 움직이려다가 머리가 터졌었는데
오오...