INTL 3:770/1 3:770/3   
   REPLYADDR news@druck.org.uk   
   REPLYTO 3:770/3.0 UUCP   
   MSGID: 24f87349   
   REPLY: <9Nn*Sa1Cz@news.chiark.greenend.org.uk> dcd970e7   
   PID: SoupGate-Win32 v1.05   
   On 14/02/2024 22:37, Theo wrote:   
   > That's about right - ARM1/ARM2 was designed specifically for the Archimedes,   
   > and various design decisions that remain in Aarch32 are because of specific   
   > constraints on that platform. For example ARM2 had no cache and was   
   > designed to make best use of FPM DRAM. Every instruction took two cycles   
   > except some where sequential memory accesses could be completed in a single   
   > cycle - hence LDM/STM instructions.   
      
   I know what you mean there, but just to clarify, the majority of   
   arithmetic instructions took one cycle (except an extra cycle when using   
   shift by a register or where the PC was the destination, and multiplies   
   were up to 3 cycles).   
      
   Memory loads and stores were two cycles, one to set up the transfer and   
   one to do the transfer, but the memory system allowed a read or write to   
   the next word in just one cycle. So the LDM and STM instructions were   
   included which could transfer from 1 to 16 registers at a cost of 1 +   
   number of registers transferred cycles (as long as it was within the   
   same memory page). That did make quite a high upper bound on the   
   interrupt latency though, which was an issue for real-time use.   
      
   Strange how I can remember that from 35 years ago, but then you only had   
   to know a few classes of instruction timings in order to be able to   
   write highly optimised assembler. It became more and more complex with   
   each subsequent ARM generation, and has been best left to a compiler for   
   quite a while.   
      
   ---druck   
      
   --- SoupGate-Win32 v1.05   
    * Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3)   
   SEEN-BY: 15/0 19/38 90/1 105/81 106/201 128/260 129/305 135/225 153/7715   
   SEEN-BY: 218/700 226/30 227/114 229/110 112 113 200 206 307 317 400   
   SEEN-BY: 229/426 428 470 550 616 664 700 266/512 282/1038 291/111   
   SEEN-BY: 292/854 320/219 322/757 342/200 396/45 460/58 633/280 281   
   SEEN-BY: 633/412 418 420 509 2744 712/848 770/1 3 100 330 340 772/210   
   SEEN-BY: 772/220 230 5020/400 5075/35   
   PATH: 770/3 1 633/280 229/426   
      
|