![]() |
![]() |
#201 |
Registered User
Join Date: Oct 2020
Location: Bicester
Posts: 2,066
|
as requested. Apollo 1240@40
Code:
Got Timer, tick frequency is 709379 Hz Loaded sounds/airstrike.raw [60460 bytes] at 0x12bea80 Test case 0: Mix : None (data fectch only) Norm: None (data write only) Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 38262 ticks 189 packets Mixing 2 channel(s): 41067 ticks 189 packets Mixing 3 channel(s): 46106 ticks 189 packets Mixing 4 channel(s): 47412 ticks 189 packets Mixing 5 channel(s): 50888 ticks 189 packets Mixing 6 channel(s): 53516 ticks 189 packets Mixing 7 channel(s): 56062 ticks 189 packets Mixing 8 channel(s): 60356 ticks 189 packets Mixing 9 channel(s): 62955 ticks 189 packets Mixing 10 channel(s): 66026 ticks 189 packets Mixing 11 channel(s): 69822 ticks 189 packets Mixing 12 channel(s): 71968 ticks 189 packets Mixing 13 channel(s): 76486 ticks 189 packets Mixing 14 channel(s): 80697 ticks 189 packets Mixing 15 channel(s): 81467 ticks 189 packets Mixing 16 channel(s): 84157 ticks 189 packets Test case 1: Mix : Multiplication Norm: Multiplication/Shift Info: Move16 fetch, target 68060 Mixing 1 channel(s): 104047 ticks 189 packets Mixing 2 channel(s): 155481 ticks 189 packets Mixing 3 channel(s): 205045 ticks 189 packets Mixing 4 channel(s): 249343 ticks 189 packets Mixing 5 channel(s): 302113 ticks 189 packets Mixing 6 channel(s): 346093 ticks 189 packets Mixing 7 channel(s): 388344 ticks 189 packets Mixing 8 channel(s): 439071 ticks 189 packets Mixing 9 channel(s): 484781 ticks 189 packets Mixing 10 channel(s): 529004 ticks 189 packets Mixing 11 channel(s): 576807 ticks 189 packets Mixing 12 channel(s): 623998 ticks 189 packets Mixing 13 channel(s): 673350 ticks 189 packets Mixing 14 channel(s): 716279 ticks 189 packets Mixing 15 channel(s): 762594 ticks 189 packets Mixing 16 channel(s): 788144 ticks 189 packets Test case 2: Mix : Shift Only Norm: Multiplication/Shift Info: Move16 fetch, target 68040 Mixing 1 channel(s): 93242 ticks 189 packets Mixing 2 channel(s): 129756 ticks 189 packets Mixing 3 channel(s): 158397 ticks 189 packets Mixing 4 channel(s): 189102 ticks 189 packets Mixing 5 channel(s): 221582 ticks 189 packets Mixing 6 channel(s): 254914 ticks 189 packets Mixing 7 channel(s): 284060 ticks 189 packets Mixing 8 channel(s): 318156 ticks 189 packets Mixing 9 channel(s): 345797 ticks 189 packets Mixing 10 channel(s): 379714 ticks 189 packets Mixing 11 channel(s): 408949 ticks 189 packets Mixing 12 channel(s): 442674 ticks 189 packets Mixing 13 channel(s): 474378 ticks 189 packets Mixing 14 channel(s): 505013 ticks 189 packets Mixing 15 channel(s): 535860 ticks 189 packets Mixing 16 channel(s): 554053 ticks 189 packets Test case 3: Mix : Lookup Norm: Multiplication/Shift Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 95102 ticks 189 packets Mixing 2 channel(s): 124686 ticks 189 packets Mixing 3 channel(s): 151468 ticks 189 packets Mixing 4 channel(s): 178837 ticks 189 packets Mixing 5 channel(s): 206412 ticks 189 packets Mixing 6 channel(s): 237385 ticks 189 packets Mixing 7 channel(s): 269127 ticks 189 packets Mixing 8 channel(s): 296815 ticks 189 packets Mixing 9 channel(s): 322307 ticks 189 packets Mixing 10 channel(s): 351619 ticks 189 packets Mixing 11 channel(s): 381851 ticks 189 packets Mixing 12 channel(s): 400917 ticks 189 packets Mixing 13 channel(s): 431904 ticks 189 packets Mixing 14 channel(s): 456465 ticks 189 packets Mixing 15 channel(s): 486514 ticks 189 packets Mixing 16 channel(s): 506035 ticks 189 packets Test case 4: Mix : Delta Lookup Norm: Multiplication/Shift Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 97014 ticks 189 packets Mixing 2 channel(s): 134346 ticks 189 packets Mixing 3 channel(s): 166873 ticks 189 packets Mixing 4 channel(s): 199198 ticks 189 packets Mixing 5 channel(s): 236140 ticks 189 packets Mixing 6 channel(s): 270004 ticks 189 packets Mixing 7 channel(s): 307443 ticks 189 packets Mixing 8 channel(s): 339725 ticks 189 packets Mixing 9 channel(s): 372852 ticks 189 packets Mixing 10 channel(s): 401830 ticks 189 packets Mixing 11 channel(s): 434775 ticks 189 packets Mixing 12 channel(s): 467363 ticks 189 packets Mixing 13 channel(s): 498165 ticks 189 packets Mixing 14 channel(s): 540029 ticks 189 packets Mixing 15 channel(s): 566729 ticks 189 packets Mixing 16 channel(s): 585569 ticks 189 packets Preencoding sample data at 0x12bea80, 3779 frames... Preencoding sample data at 0x13e8860, 3779 frames... Test case 5: Mix : Delta Lookup (Pre-encoded source) Norm: Multiplication/Shift Info: Move16 fetch, target 68040 Mixing 1 channel(s): 94100 ticks 189 packets Mixing 2 channel(s): 124813 ticks 189 packets Mixing 3 channel(s): 150709 ticks 189 packets Mixing 4 channel(s): 177561 ticks 189 packets Mixing 5 channel(s): 203244 ticks 189 packets Mixing 6 channel(s): 232850 ticks 189 packets Mixing 7 channel(s): 262880 ticks 189 packets Mixing 8 channel(s): 287542 ticks 189 packets Mixing 9 channel(s): 311968 ticks 189 packets Mixing 10 channel(s): 346801 ticks 189 packets Mixing 11 channel(s): 361729 ticks 189 packets Mixing 12 channel(s): 389527 ticks 189 packets Mixing 13 channel(s): 415901 ticks 189 packets Mixing 14 channel(s): 439177 ticks 189 packets Mixing 15 channel(s): 467195 ticks 189 packets Mixing 16 channel(s): 481485 ticks 189 packets |
![]() |
![]() |
#202 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
I think the hunch that there was too much to do per sample to do the delta analysis on the fly was on point.
Comparing the linear to the pre-encoded delta, what we are hopefully seeing is the improvement in cache accesses. I am going to do a really dirty and crude calculation here. If we subract the null mixer time we should be removing the overhead of the source data fetch and chip write* and be left only with the actual mixing and normalisation time. For the 16 channel cases: Multiplication: 788144 - 84157 = 703987 Shift Only: 554053 - 84157 = 469896 Linear Lookup: 506035 - 84157 = 421878 Delta Lookup: 585569 - 84157 = 501412 Preencoded Delta Lookup: 481485 - 84157 = 397328 I honestly expected the Shift Only version to be fastest, but based on that, it's 18.3% faster. I am going to have to look long and hard at that because I'm struggling to undersand how that can be the case. Shifting by a value in a register should cost almost nothing. *note that we know the real workload hides work behind the writes. |
![]() |
![]() |
#203 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
While I can't explain the shift only result (some sort of horrible pipeline stall I guess), the linear versus pre-encoded delta is more in line with what I was expecting. Worth noting that because all the channels are using the same source sounds with different offsets (all multiples of 16), the linear lookup case here is almost certainly better than it would otherwise be, since lookups for one channel will result in the data still being in the cache for another one soon after. That won't be the case normally.
Last edited by Karlos; 14 July 2024 at 13:48. |
![]() |
![]() |
#204 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
Since our mixing runs are only a cache line at once, it's probably worth unrolling some of these.
|
![]() |
![]() |
#205 |
Registered User
Join Date: Feb 2017
Location: Denmark
Posts: 1,281
|
060 results for good measure.
Code:
Got Timer, tick frequency is 709379 Hz Loaded sounds/airstrike.raw [60460 bytes] at 0x68bfc110 Test case 0: Mix : None (data fectch only) Norm: None (data write only) Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 28091 ticks 189 packets Mixing 2 channel(s): 32478 ticks 189 packets Mixing 3 channel(s): 34929 ticks 189 packets Mixing 4 channel(s): 37561 ticks 189 packets Mixing 5 channel(s): 39778 ticks 189 packets Mixing 6 channel(s): 42932 ticks 189 packets Mixing 7 channel(s): 45105 ticks 189 packets Mixing 8 channel(s): 48237 ticks 189 packets Mixing 9 channel(s): 50233 ticks 189 packets Mixing 10 channel(s): 52975 ticks 189 packets Mixing 11 channel(s): 55874 ticks 189 packets Mixing 12 channel(s): 58548 ticks 189 packets Mixing 13 channel(s): 60968 ticks 189 packets Mixing 14 channel(s): 64066 ticks 189 packets Mixing 15 channel(s): 65825 ticks 189 packets Mixing 16 channel(s): 67801 ticks 189 packets Test case 1: Mix : Multiplication Norm: Multiplication/Shift Info: Move16 fetch, target 68060 Mixing 1 channel(s): 47943 ticks 189 packets Mixing 2 channel(s): 64917 ticks 189 packets Mixing 3 channel(s): 79624 ticks 189 packets Mixing 4 channel(s): 94172 ticks 189 packets Mixing 5 channel(s): 108015 ticks 189 packets Mixing 6 channel(s): 122202 ticks 189 packets Mixing 7 channel(s): 136846 ticks 189 packets Mixing 8 channel(s): 151261 ticks 189 packets Mixing 9 channel(s): 165008 ticks 189 packets Mixing 10 channel(s): 179984 ticks 189 packets Mixing 11 channel(s): 193753 ticks 189 packets Mixing 12 channel(s): 208361 ticks 189 packets Mixing 13 channel(s): 222461 ticks 189 packets Mixing 14 channel(s): 236959 ticks 189 packets Mixing 15 channel(s): 250189 ticks 189 packets Mixing 16 channel(s): 260117 ticks 189 packets Test case 2: Mix : Shift Only Norm: Multiplication/Shift Info: Move16 fetch, target 68040 Mixing 1 channel(s): 48941 ticks 189 packets Mixing 2 channel(s): 68683 ticks 189 packets Mixing 3 channel(s): 82186 ticks 189 packets Mixing 4 channel(s): 96897 ticks 189 packets Mixing 5 channel(s): 111798 ticks 189 packets Mixing 6 channel(s): 126199 ticks 189 packets Mixing 7 channel(s): 141283 ticks 189 packets Mixing 8 channel(s): 155747 ticks 189 packets Mixing 9 channel(s): 170288 ticks 189 packets Mixing 10 channel(s): 185352 ticks 189 packets Mixing 11 channel(s): 199467 ticks 189 packets Mixing 12 channel(s): 214552 ticks 189 packets Mixing 13 channel(s): 229121 ticks 189 packets Mixing 14 channel(s): 243713 ticks 189 packets Mixing 15 channel(s): 257308 ticks 189 packets Mixing 16 channel(s): 267358 ticks 189 packets Test case 3: Mix : Lookup Norm: Multiplication/Shift Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 50908 ticks 189 packets Mixing 2 channel(s): 73036 ticks 189 packets Mixing 3 channel(s): 91123 ticks 189 packets Mixing 4 channel(s): 109890 ticks 189 packets Mixing 5 channel(s): 127994 ticks 189 packets Mixing 6 channel(s): 145942 ticks 189 packets Mixing 7 channel(s): 165852 ticks 189 packets Mixing 8 channel(s): 186309 ticks 189 packets Mixing 9 channel(s): 202551 ticks 189 packets Mixing 10 channel(s): 222043 ticks 189 packets Mixing 11 channel(s): 239704 ticks 189 packets Mixing 12 channel(s): 258584 ticks 189 packets Mixing 13 channel(s): 275865 ticks 189 packets Mixing 14 channel(s): 294273 ticks 189 packets Mixing 15 channel(s): 312876 ticks 189 packets Mixing 16 channel(s): 323808 ticks 189 packets Test case 4: Mix : Delta Lookup Norm: Multiplication/Shift Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 51653 ticks 189 packets Mixing 2 channel(s): 75233 ticks 189 packets Mixing 3 channel(s): 94751 ticks 189 packets Mixing 4 channel(s): 114344 ticks 189 packets Mixing 5 channel(s): 134937 ticks 189 packets Mixing 6 channel(s): 155077 ticks 189 packets Mixing 7 channel(s): 175402 ticks 189 packets Mixing 8 channel(s): 197675 ticks 189 packets Mixing 9 channel(s): 216831 ticks 189 packets Mixing 10 channel(s): 236820 ticks 189 packets Mixing 11 channel(s): 255212 ticks 189 packets Mixing 12 channel(s): 275194 ticks 189 packets Mixing 13 channel(s): 294581 ticks 189 packets Mixing 14 channel(s): 315643 ticks 189 packets Mixing 15 channel(s): 332874 ticks 189 packets Mixing 16 channel(s): 346663 ticks 189 packets Preencoding sample data at 0x68bfc110, 3779 frames... Preencoding sample data at 0x68c0ad60, 3779 frames... Test case 5: Mix : Delta Lookup (Pre-encoded source) Norm: Multiplication/Shift Info: Move16 fetch, target 68040 Mixing 1 channel(s): 50401 ticks 189 packets Mixing 2 channel(s): 72371 ticks 189 packets Mixing 3 channel(s): 90496 ticks 189 packets Mixing 4 channel(s): 109184 ticks 189 packets Mixing 5 channel(s): 127111 ticks 189 packets Mixing 6 channel(s): 146079 ticks 189 packets Mixing 7 channel(s): 164857 ticks 189 packets Mixing 8 channel(s): 184502 ticks 189 packets Mixing 9 channel(s): 203924 ticks 189 packets Mixing 10 channel(s): 221640 ticks 189 packets Mixing 11 channel(s): 239556 ticks 189 packets Mixing 12 channel(s): 256937 ticks 189 packets Mixing 13 channel(s): 277273 ticks 189 packets Mixing 14 channel(s): 294712 ticks 189 packets Mixing 15 channel(s): 314401 ticks 189 packets Mixing 16 channel(s): 325140 ticks 189 packets |
![]() |
![]() |
#206 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
There's no question the 060 version should stick with multiplication based mixing.
I think that one obvious thing coming out here is that the maximum number of effective channels should be user definable, e.g. you may have a fundamental limit of 16 but a user might restrict it to a lower value than that. |
![]() |
![]() |
#207 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
I think the next piece of the puzzle is music.
I have a dilemma here. I might want the music to be at a higher sample rate than the sounds, but that's just not how the mixer works right now. I am contemplating a simple scheme of full and half rate samples. Half rate could be trivially upsampled on the fly but I'd prefer to do that in a manner that doesn't duplicate a bunch of operations later, e.g. mix all the half rate, upsampled the intermediate, mix all the full rate. Something like that. |
![]() |
![]() |
#208 | ||
Registered User
Join Date: Feb 2017
Location: Denmark
Posts: 1,281
|
Quote:
Yes, just added results so there's timing for baseline case there as well. Also interesting to see "shift only" results. On 060 they're more in line with my intuition. Like you suggest there must be some weird pipeline thing in effect, but I just can't think of a good reason why that would be the case. I'd expect a mem lookup would need to result earlier in the pipeline, but maybe I should just forget about it ![]() Quote:
Right now "music" (at least in base game) is just one channel most (all?) of the time right? Does it actually use the mod player capability? For the reworked engine ADPCM might even be more appropriate.. For low spec machines at least, you could consider giving music 2 channels (1L/1R) and only mixing for SFX. Just an idea. |
||
![]() |
![]() |
#209 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
The current music engine is a single channel mod. It uses a full hardware channel for that, meaning that 4 and 8 channel mode are really 3 and 6 channel mode respectively. On the plus side, it does fully decouple the music from the sound effects allowing it to use a higher sample rate, which I make some use of with the remixed version of the music.
My plan for music with this system has always been to decode a stream directly into the accumulation buffers (instead of clearing them) and mix on top of it. One benefit being that we can theoretically do better than 8-bit for our stream. I am a bit worried about the overall quality though, particularly the sample rate. 16kHz is already a lot better for the sound effects (if using properly sourced data) but isn't great for music. It's all a bit moot until I implement the actual output end mind. So far I'm just evaluating everything by dumping the buffers and using a quick script to reassemble them into 16 bit audio. |
![]() |
![]() |
#210 | |
Registered User
Join Date: Jan 2005
Location: Umeå
Age: 44
Posts: 961
|
Quote:
I am getting way lower results though. Originally thought it was because I was running DblNTSC 8c, but switching to PAL Hires 4c only improved the results slightly. Results at Pal Hires 4c: Code:
mini:~ patrik$ rsh a1200 "cd ram:tkg-mixer-main; mixer" Got Timer, tick frequency is 709379 Hz Loaded sounds/airstrike.raw [60460 bytes] at 0x16c7750 Test case 0: Mix : None (data fectch only) Norm: None (data write only) Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 41524 ticks 189 packets Mixing 2 channel(s): 45230 ticks 189 packets Mixing 3 channel(s): 48619 ticks 189 packets Mixing 4 channel(s): 52148 ticks 189 packets Mixing 5 channel(s): 56098 ticks 189 packets Mixing 6 channel(s): 59533 ticks 189 packets Mixing 7 channel(s): 63265 ticks 189 packets Mixing 8 channel(s): 67060 ticks 189 packets Mixing 9 channel(s): 70024 ticks 189 packets Mixing 10 channel(s): 74019 ticks 189 packets Mixing 11 channel(s): 77708 ticks 189 packets Mixing 12 channel(s): 82480 ticks 189 packets Mixing 13 channel(s): 84609 ticks 189 packets Mixing 14 channel(s): 88622 ticks 189 packets Mixing 15 channel(s): 92185 ticks 189 packets Mixing 16 channel(s): 95312 ticks 189 packets Test case 1: Mix : Multiplication Norm: Multiplication/Shift Info: Move16 fetch, target 68060 Mixing 1 channel(s): 112562 ticks 189 packets Mixing 2 channel(s): 172102 ticks 189 packets Mixing 3 channel(s): 227313 ticks 189 packets Mixing 4 channel(s): 281511 ticks 189 packets Mixing 5 channel(s): 336082 ticks 189 packets Mixing 6 channel(s): 399388 ticks 189 packets Mixing 7 channel(s): 446608 ticks 189 packets Mixing 8 channel(s): 499864 ticks 189 packets Mixing 9 channel(s): 554432 ticks 189 packets Mixing 10 channel(s): 608261 ticks 189 packets Mixing 11 channel(s): 661827 ticks 189 packets Mixing 12 channel(s): 722105 ticks 189 packets Mixing 13 channel(s): 771687 ticks 189 packets Mixing 14 channel(s): 825086 ticks 189 packets Mixing 15 channel(s): 878710 ticks 189 packets Mixing 16 channel(s): 910019 ticks 189 packets Test case 2: Mix : Shift Only Norm: Multiplication/Shift Info: Move16 fetch, target 68040 Mixing 1 channel(s): 100412 ticks 189 packets Mixing 2 channel(s): 142452 ticks 189 packets Mixing 3 channel(s): 181257 ticks 189 packets Mixing 4 channel(s): 220722 ticks 189 packets Mixing 5 channel(s): 260411 ticks 189 packets Mixing 6 channel(s): 299921 ticks 189 packets Mixing 7 channel(s): 340293 ticks 189 packets Mixing 8 channel(s): 378202 ticks 189 packets Mixing 9 channel(s): 417917 ticks 189 packets Mixing 10 channel(s): 456530 ticks 189 packets Mixing 11 channel(s): 495774 ticks 189 packets Mixing 12 channel(s): 542505 ticks 189 packets Mixing 13 channel(s): 574277 ticks 189 packets Mixing 14 channel(s): 613807 ticks 189 packets Mixing 15 channel(s): 654961 ticks 189 packets Mixing 16 channel(s): 675072 ticks 189 packets Test case 3: Mix : Lookup Norm: Multiplication/Shift Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 102473 ticks 189 packets Mixing 2 channel(s): 143769 ticks 189 packets Mixing 3 channel(s): 179946 ticks 189 packets Mixing 4 channel(s): 215978 ticks 189 packets Mixing 5 channel(s): 262979 ticks 189 packets Mixing 6 channel(s): 302454 ticks 189 packets Mixing 7 channel(s): 344982 ticks 189 packets Mixing 8 channel(s): 387834 ticks 189 packets Mixing 9 channel(s): 424685 ticks 189 packets Mixing 10 channel(s): 461663 ticks 189 packets Mixing 11 channel(s): 500451 ticks 189 packets Mixing 12 channel(s): 535603 ticks 189 packets Mixing 13 channel(s): 580778 ticks 189 packets Mixing 14 channel(s): 615716 ticks 189 packets Mixing 15 channel(s): 655865 ticks 189 packets Mixing 16 channel(s): 680289 ticks 189 packets Test case 4: Mix : Delta Lookup Norm: Multiplication/Shift Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 103494 ticks 189 packets Mixing 2 channel(s): 146675 ticks 189 packets Mixing 3 channel(s): 184470 ticks 189 packets Mixing 4 channel(s): 221333 ticks 189 packets Mixing 5 channel(s): 265491 ticks 189 packets Mixing 6 channel(s): 311530 ticks 189 packets Mixing 7 channel(s): 358642 ticks 189 packets Mixing 8 channel(s): 393745 ticks 189 packets Mixing 9 channel(s): 431983 ticks 189 packets Mixing 10 channel(s): 469907 ticks 189 packets Mixing 11 channel(s): 509093 ticks 189 packets Mixing 12 channel(s): 544752 ticks 189 packets Mixing 13 channel(s): 586409 ticks 189 packets Mixing 14 channel(s): 633521 ticks 189 packets Mixing 15 channel(s): 666312 ticks 189 packets Mixing 16 channel(s): 688416 ticks 189 packets Preencoding sample data at 0x16c7750, 3779 frames... Preencoding sample data at 0x16d63a0, 3779 frames... Test case 5: Mix : Delta Lookup (Pre-encoded source) Norm: Multiplication/Shift Info: Move16 fetch, target 68040 Mixing 1 channel(s): 101889 ticks 189 packets Mixing 2 channel(s): 142785 ticks 189 packets Mixing 3 channel(s): 178062 ticks 189 packets Mixing 4 channel(s): 214533 ticks 189 packets Mixing 5 channel(s): 253530 ticks 189 packets Mixing 6 channel(s): 295583 ticks 189 packets Mixing 7 channel(s): 335529 ticks 189 packets Mixing 8 channel(s): 373664 ticks 189 packets Mixing 9 channel(s): 411765 ticks 189 packets Mixing 10 channel(s): 446064 ticks 189 packets Mixing 11 channel(s): 479114 ticks 189 packets Mixing 12 channel(s): 514391 ticks 189 packets Mixing 13 channel(s): 553134 ticks 189 packets Mixing 14 channel(s): 592174 ticks 189 packets Mixing 15 channel(s): 631658 ticks 189 packets Mixing 16 channel(s): 647546 ticks 189 packets Also a slight bug report: if the mixer exe is not started from the directory where it is located, it does some bad stuff, very slowly, not even completing test case 0, eventually causing a black screen. Console output wise, it is missing the audio filename printout: Code:
mini:~ patrik$ rsh a1200 ram:tkg-mixer-main/mixer Got Timer, tick frequency is 709379 Hz Test case 0: Mix : None (data fectch only) Norm: None (data write only) Info: Move16 fetch, target 68040/60 Mixing 1 channel(s |
|
![]() |
![]() |
#211 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
You're saying my terrible test application is terrible?
I need to lie down ! ![]() |
![]() |
![]() |
#212 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
I need to put all these into a spreadsheet at some point and do some proper analysis.
Thanks for taking the time to test it. |
![]() |
![]() |
#213 | |
Registered User
Join Date: Jan 2005
Location: Umeå
Age: 44
Posts: 961
|
Quote:
Apparently RemApollo + MMULib 68040.library/mmu.library is not a match in heaven: as RemApollo already has enabled the MMU via its resident before MMULib is activated by SetPatch, MMULib does not set chip memory to "IMPRECISE NONSERIALIZED", which gives unnecessarily slow chipmem read speeds. To illustrate this in actual numbers: RemApollo + MMULib 68040.library/mmu.library at PAL Hires 4c: Code:
mini:~ patrik$ rsh a1200 bustest chip BusSpeedTest 0.19 (mlelstv) Buffer: 262144 Bytes, Alignment: 32768 ======================================================================== memtype addr op cycle calib bandwidth chip $00030000 readw 888.8 ns normal 2.3 * 10^6 byte/s chip $00030000 readl 889.1 ns normal 4.5 * 10^6 byte/s chip $00030000 readm 889.7 ns normal 4.5 * 10^6 byte/s chip $00030000 writew 656.3 ns normal 3.0 * 10^6 byte/s chip $00030000 writel 656.2 ns normal 6.1 * 10^6 byte/s chip $00030000 writem 652.5 ns normal 6.1 * 10^6 byte/s Code:
mini:~ patrik$ rsh a1200 bustest chip BusSpeedTest 0.19 (mlelstv) Buffer: 262144 Bytes, Alignment: 32768 ======================================================================== memtype addr op cycle calib bandwidth chip $00038000 readw 657.0 ns normal 3.0 * 10^6 byte/s chip $00038000 readl 656.7 ns normal 6.1 * 10^6 byte/s chip $00038000 readm 670.6 ns normal 6.0 * 10^6 byte/s chip $00038000 writew 654.7 ns normal 3.1 * 10^6 byte/s chip $00038000 writel 654.7 ns normal 6.1 * 10^6 byte/s chip $00038000 writem 651.5 ns normal 6.1 * 10^6 byte/s Code:
mini:~ patrik$ rsh a1200 "cd ram:tkg-mixer-main; mixer" Got Timer, tick frequency is 709379 Hz Loaded sounds/airstrike.raw [60460 bytes] at 0x14887c0 Test case 0: Mix : None (data fectch only) Norm: None (data write only) Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 38298 ticks 189 packets Mixing 2 channel(s): 40737 ticks 189 packets Mixing 3 channel(s): 44298 ticks 189 packets Mixing 4 channel(s): 47872 ticks 189 packets Mixing 5 channel(s): 50371 ticks 189 packets Mixing 6 channel(s): 53491 ticks 189 packets Mixing 7 channel(s): 56420 ticks 189 packets Mixing 8 channel(s): 59657 ticks 189 packets Mixing 9 channel(s): 62406 ticks 189 packets Mixing 10 channel(s): 65642 ticks 189 packets Mixing 11 channel(s): 68443 ticks 189 packets Mixing 12 channel(s): 71245 ticks 189 packets Mixing 13 channel(s): 75034 ticks 189 packets Mixing 14 channel(s): 78363 ticks 189 packets Mixing 15 channel(s): 83441 ticks 189 packets Mixing 16 channel(s): 83920 ticks 189 packets Test case 1: Mix : Multiplication Norm: Multiplication/Shift Info: Move16 fetch, target 68060 Mixing 1 channel(s): 101686 ticks 189 packets Mixing 2 channel(s): 151777 ticks 189 packets Mixing 3 channel(s): 199172 ticks 189 packets Mixing 4 channel(s): 244811 ticks 189 packets Mixing 5 channel(s): 289965 ticks 189 packets Mixing 6 channel(s): 335702 ticks 189 packets Mixing 7 channel(s): 381427 ticks 189 packets Mixing 8 channel(s): 428164 ticks 189 packets Mixing 9 channel(s): 472806 ticks 189 packets Mixing 10 channel(s): 517953 ticks 189 packets Mixing 11 channel(s): 567532 ticks 189 packets Mixing 12 channel(s): 609887 ticks 189 packets Mixing 13 channel(s): 654042 ticks 189 packets Mixing 14 channel(s): 699574 ticks 189 packets Mixing 15 channel(s): 746107 ticks 189 packets Mixing 16 channel(s): 774103 ticks 189 packets Test case 2: Mix : Shift Only Norm: Multiplication/Shift Info: Move16 fetch, target 68040 Mixing 1 channel(s): 91848 ticks 189 packets Mixing 2 channel(s): 124572 ticks 189 packets Mixing 3 channel(s): 154901 ticks 189 packets Mixing 4 channel(s): 185833 ticks 189 packets Mixing 5 channel(s): 216568 ticks 189 packets Mixing 6 channel(s): 248428 ticks 189 packets Mixing 7 channel(s): 278458 ticks 189 packets Mixing 8 channel(s): 308835 ticks 189 packets Mixing 9 channel(s): 339489 ticks 189 packets Mixing 10 channel(s): 370587 ticks 189 packets Mixing 11 channel(s): 400431 ticks 189 packets Mixing 12 channel(s): 432510 ticks 189 packets Mixing 13 channel(s): 466516 ticks 189 packets Mixing 14 channel(s): 492260 ticks 189 packets Mixing 15 channel(s): 523380 ticks 189 packets Mixing 16 channel(s): 541492 ticks 189 packets Test case 3: Mix : Lookup Norm: Multiplication/Shift Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 92501 ticks 189 packets Mixing 2 channel(s): 123414 ticks 189 packets Mixing 3 channel(s): 148521 ticks 189 packets Mixing 4 channel(s): 172729 ticks 189 packets Mixing 5 channel(s): 201362 ticks 189 packets Mixing 6 channel(s): 231684 ticks 189 packets Mixing 7 channel(s): 261367 ticks 189 packets Mixing 8 channel(s): 290506 ticks 189 packets Mixing 9 channel(s): 320908 ticks 189 packets Mixing 10 channel(s): 343399 ticks 189 packets Mixing 11 channel(s): 366969 ticks 189 packets Mixing 12 channel(s): 393204 ticks 189 packets Mixing 13 channel(s): 420350 ticks 189 packets Mixing 14 channel(s): 447813 ticks 189 packets Mixing 15 channel(s): 475078 ticks 189 packets Mixing 16 channel(s): 490839 ticks 189 packets Test case 4: Mix : Delta Lookup Norm: Multiplication/Shift Info: Move16 fetch, target 68040/60 Mixing 1 channel(s): 94992 ticks 189 packets Mixing 2 channel(s): 131490 ticks 189 packets Mixing 3 channel(s): 165043 ticks 189 packets Mixing 4 channel(s): 193678 ticks 189 packets Mixing 5 channel(s): 228594 ticks 189 packets Mixing 6 channel(s): 265004 ticks 189 packets Mixing 7 channel(s): 300190 ticks 189 packets Mixing 8 channel(s): 332152 ticks 189 packets Mixing 9 channel(s): 362934 ticks 189 packets Mixing 10 channel(s): 394044 ticks 189 packets Mixing 11 channel(s): 423760 ticks 189 packets Mixing 12 channel(s): 456258 ticks 189 packets Mixing 13 channel(s): 487613 ticks 189 packets Mixing 14 channel(s): 524874 ticks 189 packets Mixing 15 channel(s): 553011 ticks 189 packets Mixing 16 channel(s): 572913 ticks 189 packets Preencoding sample data at 0x14887c0, 3779 frames... Preencoding sample data at 0x1497410, 3779 frames... Test case 5: Mix : Delta Lookup (Pre-encoded source) Norm: Multiplication/Shift Info: Move16 fetch, target 68040 Mixing 1 channel(s): 92844 ticks 189 packets Mixing 2 channel(s): 121912 ticks 189 packets Mixing 3 channel(s): 146942 ticks 189 packets Mixing 4 channel(s): 171061 ticks 189 packets Mixing 5 channel(s): 199652 ticks 189 packets Mixing 6 channel(s): 227401 ticks 189 packets Mixing 7 channel(s): 255028 ticks 189 packets Mixing 8 channel(s): 281467 ticks 189 packets Mixing 9 channel(s): 306032 ticks 189 packets Mixing 10 channel(s): 334785 ticks 189 packets Mixing 11 channel(s): 353650 ticks 189 packets Mixing 12 channel(s): 378033 ticks 189 packets Mixing 13 channel(s): 404438 ticks 189 packets Mixing 14 channel(s): 431440 ticks 189 packets Mixing 15 channel(s): 456705 ticks 189 packets Mixing 16 channel(s): 470951 ticks 189 packets |
|
![]() |
![]() |
#214 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
That's interesting, but we shouldn't be reading chip ram in this task, only writing to it.
|
![]() |
![]() |
#215 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
Would we say that case 5 is the best for 040 then?
That's the "pre-convert linear 8-bit samples into L1 : D15 format and look up the 16 bit delta" |
![]() |
![]() |
#216 |
Registered User
Join Date: Jan 2005
Location: Umeå
Age: 44
Posts: 961
|
Perhaps the "IMPRECISE NONSERIALIZED" MMU setting on the chipmem area improves writes in ways bustest will not show, like how the cpu performs with instructions inlined between chip writes.
|
![]() |
![]() |
#217 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
That's possible, yeah. If for any reason, the instructions between the writes can't begin while the write is pending, you'll take a big hit. That shouldn't depend on the number of channels playing though as all the mixing and peak analysis happens before we get to the write stage. Then we interleave the volume normalisation with the writes, or at least, that's the theory.
|
![]() |
![]() |
#218 | |
Registered User
Join Date: Jan 2005
Location: Umeå
Age: 44
Posts: 961
|
Quote:
1 channel: ~10% diff 4 channels: ~25% diff 8 channels: ~32% diff 16 channels: ~37% diff Possible to execute more instructions between the chipmem writes with more channels mixed? |
|
![]() |
![]() |
#219 |
Alien Bleed
Join Date: Aug 2022
Location: UK
Posts: 4,755
|
I don't understand how but I can't refute your measurements.
|
![]() |
![]() |
#220 |
Registered User
Join Date: Jan 2005
Location: Umeå
Age: 44
Posts: 961
|
Perhaps something more with the MMU setup is dysfunctional with RemApollo+MMULib. Can make it do speedy chipmem for that setup too by running MuFastChip separately and if that is slower than full MMULib, that would show if that is the case.
|
![]() |
Currently Active Users Viewing This Thread: 3 (2 members and 1 guests) | |
d4rk3lf, patrik |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Slow A4000 after overhaul | Screechstar | support.Hardware | 57 | 11 July 2023 23:02 |
Amiga Font Editor overhaul | buggs | Coders. Releases | 19 | 09 March 2021 17:39 |
Escom A1200 overhaul | Ox. | Amiga scene | 8 | 26 August 2014 08:54 |
Will Bridge Practice series needs an overhaul | mk1 | HOL data problems | 1 | 02 April 2009 21:55 |
|
|