how does a debug file output 8GB+? Is it running for minutes/hours? Or is it in a format that uses a lot of rich text? I would assume a text file in hex or unicode wouldn't use very much.. Is there a way to create intervals of log files so they have a cap on the size?
It is a simple debugger log in the transputer emulator (enabled by compilation option) which outputs each instruction executed so far, around 70 bytes per line displaying the 3 registers, the stack pointer, the instruction pointer, and the disassembled instruction.
The emulated C compiler processed a whole file ccvars.c before getting stuck in ccinter.c (this is the 5gb mark, approximately 78 millions of instructions executed). I stopped the process as soon as I saw it was stuck, but the emulator is fast, and I got extra 3 gb in the log. All this happened in less than two minutes.
Another reminder of how easy it is to forget how ridiculously fast computers are these days (especially when you're like me and not writing stuff close to the metal for your day job).
In terms of latency... well... we also could do a lot better there, but as I understand it, even if you do your best to cut away as much software bloat as possible, the latency "floor" seems to be higher than in the old days[0]. And the many layers of abstraction that is the average software stack don't help. Like, I'm doing my best to keep a web-app snappy, but there's only so much you can squeeze out of a browser.
I think we're talking about different interpretations of the word "latency", both valid. You are thinking more about UI freezes and missing input, right? EDIT: or do you mean that bad latency numbers are less crucial as long as input isn't dropped or out of order? In that case I think it depends on the task.
I meant "time between input and visible change on screen", or lag between writing on a tablet and the screen or eink showing the drawn line. It's not really as crucial when typing, but especially for writing or drawing on a tablet low input latency is the difference between getting in a real flow state or not.
Latency is subjective, but yes, I was referring to GUI latencies mainly. System design is increasingly more important when building new alternatives to existing architectures. x86, ARM are much larger chipsets than before, but smartphones do not really need a single operating system for making phone calls and browsing Youtube. What I'd like to see is more low latency devices that can compartmentalize applications and cores based on power consumption and speed requirements. Thinks like a notepad, calculator, and SMS app do not require Android 17, which, on my newest phone, takes over 2 minutes to reboot. In the past, the CPU would use big.LITTLE cores (like the ARM Cortex A53 and A72), but there's also a bootup cost to running those compared to a simple calculator or microcontroller. It would be ideal to have a dual display flip phone that is always on for phone calls and SMS (using something like Symbian OS), whereas the larger cores and OS can be turned off when not needed.
Refresh rate is only one component of the system- an integrated display controller can lower the latency, and of course, the choice of computer affects the speed as well. Their choice to go with USB-C Alt is a good idea.
> After another half-an-hour I found that my malloc function always returned the same address!!! Wow! An unexpected bug in my operating system. When the memory space is full, the malloc routine simply fails to return a NULL pointer.
don't you love it when your investigation finds bugs in completely unrelated part of the system?
It's always a delight to read about your projects, Oscar. Every program is a jewel.
how does a debug file output 8GB+? Is it running for minutes/hours? Or is it in a format that uses a lot of rich text? I would assume a text file in hex or unicode wouldn't use very much.. Is there a way to create intervals of log files so they have a cap on the size?
It is a simple debugger log in the transputer emulator (enabled by compilation option) which outputs each instruction executed so far, around 70 bytes per line displaying the 3 registers, the stack pointer, the instruction pointer, and the disassembled instruction.
The emulated C compiler processed a whole file ccvars.c before getting stuck in ccinter.c (this is the 5gb mark, approximately 78 millions of instructions executed). I stopped the process as soon as I saw it was stuck, but the emulator is fast, and I got extra 3 gb in the log. All this happened in less than two minutes.
Another reminder of how easy it is to forget how ridiculously fast computers are these days (especially when you're like me and not writing stuff close to the metal for your day job).
And how ridiculously slow software is. Unless you are doing bulk processing most task should be ready in milliseconds.
In terms of throughput, absolutely.
In terms of latency... well... we also could do a lot better there, but as I understand it, even if you do your best to cut away as much software bloat as possible, the latency "floor" seems to be higher than in the old days[0]. And the many layers of abstraction that is the average software stack don't help. Like, I'm doing my best to keep a web-app snappy, but there's only so much you can squeeze out of a browser.
[0] https://danluu.com/input-lag/
Latency can be reduced with removing the memory management-as with uclinux- https://github.com/EI2030/FemtoTX/blob/gh-pages/uclinux_intr...
But chips today are much larger and are basically a cruise ship or an aircraft carrier- bigger with more work than a bike. https://www.inkandswitch.com/slow-software/
https://youtu.be/oE4cbIP5ieQ?si=h1I51dWw5w-OulVs
Actually latency is way less of a problem, if the input is buffered, as you can just type ahead.
I think we're talking about different interpretations of the word "latency", both valid. You are thinking more about UI freezes and missing input, right? EDIT: or do you mean that bad latency numbers are less crucial as long as input isn't dropped or out of order? In that case I think it depends on the task.
I meant "time between input and visible change on screen", or lag between writing on a tablet and the screen or eink showing the drawn line. It's not really as crucial when typing, but especially for writing or drawing on a tablet low input latency is the difference between getting in a real flow state or not.
Latency is subjective, but yes, I was referring to GUI latencies mainly. System design is increasingly more important when building new alternatives to existing architectures. x86, ARM are much larger chipsets than before, but smartphones do not really need a single operating system for making phone calls and browsing Youtube. What I'd like to see is more low latency devices that can compartmentalize applications and cores based on power consumption and speed requirements. Thinks like a notepad, calculator, and SMS app do not require Android 17, which, on my newest phone, takes over 2 minutes to reboot. In the past, the CPU would use big.LITTLE cores (like the ARM Cortex A53 and A72), but there's also a bootup cost to running those compared to a simple calculator or microcontroller. It would be ideal to have a dual display flip phone that is always on for phone calls and SMS (using something like Symbian OS), whereas the larger cores and OS can be turned off when not needed.
E-ink has had some improvements- I'm acquainted with the developers of this project: https://www.crowdsupply.com/modos-tech/modos-paper-monitor
Refresh rate is only one component of the system- an integrated display controller can lower the latency, and of course, the choice of computer affects the speed as well. Their choice to go with USB-C Alt is a good idea.
> After another half-an-hour I found that my malloc function always returned the same address!!! Wow! An unexpected bug in my operating system. When the memory space is full, the malloc routine simply fails to return a NULL pointer.
don't you love it when your investigation finds bugs in completely unrelated part of the system?