3 ms·
I'm genuinely surprised to see Tetris have the lowest power consumption, since unlike the other two games, it does not use the HALT instruction. The HALT instru
by kmm 5y ago
I'm genuinely surprised to see Tetris have the lowest power consumption, since unlike the other two games, it does not use the HALT instruction. The HALT instruction puts the CPU to sleep until an interrupt occurs, supposedly lowering power consumption during that time. Most games have it somewhere in their main loop, after they've done the work they needed to do for the current frame, they halt until a V-Blank occurs. Tetris on the other hand busy waits, going over the same 3 instruction loop until the next frame. Most games halt 80% of the time, so now I'm wondering if that instruction ever did anything at all.
- gambiting 5y agoBut the post is about measuring the cartridge power consumption, no? So even if Tetris is running at 100% CPU usage all the time, it makes no difference to the power consumption of the cart itself, the game is small enough that it rarely reads from the cart.
- pm215 5y agoThe method described in the post indicates that it's measuring the full consumption of the whole gameboy+cartridge. You can also tell this because there's an example of the "without cartridge" power consumption, and it's not "flat zero" :-)
- kmm 5y agoIn his description of the test setup, he says that he powers the Game Boy with the DC jack input, so I assume he's measuring the power consumption of the entire machine, but I might be misunderstanding that. Either way I'd expect the Tetris cartridge on itself to consume more power as well, as during the busy loop the game is constantly reading the next instruction, whereas games which halt don't access the cartridge at all until an interrupt happens.
- barbegal 5y agoTetris only had the lowest because the cartridge contains just a ROM chip and doesn't have RAM or memory bank controller chips as other cartridges have. I'm sure the halt instruction does reduce CPU power but it isn't that significant compared to the overall power of the cartridge and other peripherals.
- bjt2n3904 5y agoJust to add to what everyone else is saying. Quiescent current is the current the chips use doing nothing at all. It's a static power consumption. With this older hardware, my guess is it's shockingly high. This test could have been a little better, if they measured current between the GB and the cartridge explicitly. Also, would want to check the voltage on the cartridge downstream of the shunt to make sure it's not browning out under the burden voltage of the current meter, and causing an artificially high current usage. (Though, going through the GB itself might address this...)
- gekkio 5y agoI initially considered measuring the cartridge +5V rail directly, but decided to go with total power consumption of the console for two main reasons: 1. Total power consumption is easier to relate to battery life, because e.g. doubling the total power consumption roughly halves battery life 2. Cartridge current draw on +5V rail doesn't fully capture the impact on total power consumption. Improper bus behaviour and leakage currents can increase current draw on the console itself. As an extreme example, shorting one of the cartridge I/O pins to ground might not pull any current from the cartridge +5V rail, but it might increase current draw and power dissipation in the main SoC significantly if it's driving the I/O line high. In any case, optimally I'd have a setup for measuring both :) But right now I only have test automation infrastructure ready for HMC8043
- aidenn0 5y agoIf you use alkaline batteries, doubling the current more than halves the battery life; Ni based rechargeables don't show that effect though
- ChrisRR 5y agoThis is because Tetris doesn't use an MBC unlike Pokemon and Wario
- simias 5y agoI never bothered to measure it but I suspect that for older CPUs dynamic consumption is not super high compared to the other elements. The main reason for that belief is that I know that some "retro" consoles didn't even feature any way to HALT the CPU and busy looping was the only possibility. In particular the MIPS CPU used by the PlayStation didn't have any way to halt the CPU. AFAIK neither did the N64. Admittedly these weren't (usually) battery powered so power draw was less of an issue, but the fact that these ISAs didn't even bother with an HALT opcode at all tells me that it wasn't really considered a super valuable feature back then. Admittedly the GameBoy CPU is CISC, so maybe it fared worse than MIPS in this case, but it was also running at a much lower clock rate, maybe a tight NOP loop didn't consume all that much.
- lizknope 5y agoWhen I was in school I remember a professor saying to "Never gate a clock." In the 90's I think people were worried about clock glitches. My first few years in the industry in the late 90's we had customers that didn't care about power usage. They wanted the fastest performance and would put a heat sink or bigger fan on their chip. It wasn't long after that when power usage became more important. We have had logic synthesis tools that automatically insert clock gate logic to save power using various glitchless clock cell designs.
- tenebrisalietum 5y agoInteresting fact: The TMS9900 had an IDLE instruction - I recall reading somewhere that it was implemented internally as an unconditional jump to itself. IMHO I think for older classic CPUs in embedded situations, the expectation was that if halting the CPU was needed, external logic would do that. - The video chip on the Commodore 64 halts the CPU during the frame to fetch memory every 8 lines IIRC (disabling video output increases CPU speed by a bit) - The NES halts the CPU when it tells the PPU to DMA 256 bytes of memory to sprite descriptor memory before it renders the frame. - Commodore 128 will halt the non-active CPU (Z80 or 8502). Not sure what hardware is responsible for this, probably that funky MMU chip. - The Atari 2600 has a WSYNC gregister which tells the TIA to halt the CPU until the next TV scanline starts (it otherwise doesn't use IRQs or NMIs which I found interesting). Probably halting to save power didn't matter to manufacturers until CPUs required heatsinks or for portable devies. At that point saving power is also preventing heat buildup and enabling the hardware to last longer.
- evancox100 5y agoCouldn't find solid information on the original GameBoy CPU, but it's possible it didn't use CMOS style logic and had much higher static power consumption.