ZX Hard #01
06 мая 1999 |
|
Fast Memory Access (FMA) - acceleration scheme with memory.
Fast Memory Access (FMA). (C) VTS'99 Fast, but not Direct Memory Access - because working memory exercises continue good old Z80. This method is proposed to use in peripheral (as well as any other) devices on the Z80 to increase their productivity when working with arrays of memory (graphics, for example). Thus, we can throw the memory-memory with rate of 5.10 cycles / byte. Khe-heh, already see the smirk kodyaschey brethren). Yeah, STE Again favorite stack. True, the normal DMA shakes bytes for 8 cycles (at least 8237, the Zilog information do not have) but he booolshoy and gluttonous;). True, he still manages to pump out and uploads the data from the outside, and a little poshustree. In the case may be somewhere in memory Z80 "Progryzt" hole and insert there the registers of this very "outside", and do not take offense for a speed close to the IN / OUT (although the turbo will be better, because IN / OUT operate normally - I mean KAY). And now more specific. I think it's common knowledge that one Frame Spectrum screen thrown like this: LD HL, XXXX; 10 cycles PUSH HL; 11 clock cycles LD HL, YYYY -------- PUSH HL 21t./2bayta LD HL, ZZZZ (10.5t./bayt) PUSH HL -------- .... 21 * 3072 = 64512t. only 3072 times XXXX, YYYY, ZZZZ - is the screen. As can be seen on-screen information through the every two bytes thinned the other two Bytes: .. E5 21 XX XX E5 21 YY YY E5 21 ZZ ZZ ... LD HL, XXXX PUSH HL To prepare such a mess in the usual memory, you need to work longer than one frame, therefore, requires thorough dekryunching and Prorva memory. But there is a better way! ((C) advertising) and it requires zhelezyachnogo intervention. Is he in the entanglement bits addresses, for example, A14 and A1, can also on condition A15 = 1. Then we get the following: 0000 0000 16k 16k segment 0 segment 0 4000 4000 16k 16k segment 1 segment 1 8000 8000 16k segment 2 FMA C000 32k 16k segment 3 AREA FFFF FFFF Ie 2'oy and 3'y segments overlapped each other every two bytes. AND if now in 2'oy segment written in a row a bunch of (16Kb) E5 21 (and at # BFFD Record C9 - RET) and make the call on # 8001, then the stack unload 16,382 bytes :-). It remains only the top page of memory click ... Well, in the end to count how much We still passes 8,237: K (8237) = (10.5-8) * 100/10.5 = 23.8% Not so much ... ps: Here we describe only the principle, because apply it to some central Z80 problematic (and it is not in iron ...). Ie it to the periphery! isdos 23-04-99 22:47 msk
Other articles:
Similar articles:
В этот день... 21 November