4 ms·
Not to mention further performance advancements in processor design since then (pipelining, SIMD, etc...), further increasing throughput above the 1000x thresho
by Breakthrough 14y ago
Not to mention further performance advancements in processor design since then (pipelining, SIMD, etc...), further increasing throughput above the 1000x threshold. One should also consider the increases in word length, adding the ability to process more data in less time.
- meaty 14y agoYet it's a shame that we seem to piss that extra performance away instantly in software. Things felt faster in the 80's than they did now, even doing the same tasks.
- mikeash 14y agoI recall waiting a couple of minutes for my computer to just boot in the 80s. When I want to use my phone, it becomes usable in well under a second. Waiting a few seconds every time I hit save was fun. Didn't stop me from developing a ferocious ^S reflex. Fortunately, save is fast enough not to be noticeable these days, to the extent that it usually happens automatically now. Watching a WYSIWYG font menu draw each individual entry was fun. We certainly don't get that pleasure now. But yes, things certainly felt faster in the 80s.... /s
- meaty 14y agoI don't know what you were using but I was booted and operational in under 3-4 seconds on everything I used in the 80s (BBC Master, Acorn A310)
- mikeash 14y agoMy Apple IIGS could be "operational" pretty fast if all you were after was a BASIC prompt with no disk access. If you wanted a BASIC prompt with disk access, that took some seconds. If you want to actually load useful software, it took quite a while.
- to3m 14y agoIf you want to add 2 32-bit integers, on 6502 you'll need something like the following, assuming this is a 32-bit integer you're actively working with and are probably about to use again fairly soon: CLC ; 2 LDA&70 ADC&74 STA&70 ; 3 3 3 = 9 LDA&71 ADC&75 STA&71 ; 3 3 3 = 9 LDA&72 ADC&76 STA&72 ; 3 3 3 = 9 LDA&73 ADC&77 STA&73 ; 3 3 3 = 9 That's for a total of 38 cycles. So on the computer I started programming on, you could do ~52,000 32-bit adds per second. By comparison, for a modern Pentium, according to Intel's docs, a 32-bit add (again, on data you're using) takes 1 cycle, end to end. ADD ESI,EDX So on the laptop that's in front of me, which is a crap one, you could do 2,530,000,000 32-bit adds per second. A 48,000-fold performance increase. Maybe 96,000 times, if you have no dependency chain (ADD throughput is 2 per cycle). This ignores the fact my modern computer has 2 cores.
- js2 14y agoAnd that's loading/storing to/from the zero page (the first 256 bytes of memory). Loading/storing from higher addresses requires 4 cycles. But, "ADD ESI,EDX" is adding two registers isn't it? So I think you need to include the loading/storing of those registers back to memory for a more fair comparison. I haven't touched 6502 assembly in over 20 years. Brings back memories. :-)
- to3m 14y agoThis is working data, so you'd keep it in a register if possible. Sadly that just happens not to be possible on the 6502 :)
- mmphosis 14y agoTwo bytes can be kept in the X and Y registers. Immediate load and add instructions only use two cycles. CLC ; 2 ADC #b1 STA&70 ; 0 2 3 = 5 LDA #a2 ADC #b2 TAY ; 2 2 2 = 6 LDA #a3 ADC #b3 TAX ; 2 2 2 = 6 LDA #a4 ADC #b4 ; 2 2 = 4 ; total 23 cycles
- 14y ago