Profile picture
, 23 tweets, 4 min read Read on Twitter
Hypothesis:

At the microprocessor scale, moving data and computation are not actually different things. You’re always moving bits. You’re sometimes changing them.

Bits may fly straight to RAM and back, or spin inside the CPU. Either way, distance traveled.

Coding is routing.
All models are wrong, some are useful. I think this unified view of computer engineering is interesting. Explains the enormous effects of locality, smaller processes, etc. Shorter distances.

Faster clocks? Bits don’t have to fly as far. Less power per bit. Lighter spins faster.
You could argue this is just another formulation of the time/memory tradeoff, but I think that says recomputing bits on demand is different than restoring them from memory.
I’m saying memory is remote compute that doesn’t change bits. Time is just how long it takes bits to arrive at their destination, traversing local or remote compute. Local being able to change much more, but move much less.

Time/Memory is City vs. Highway driving. It’s routing.
Could be history here, might show up in the Shockley era. I’m asking if so. C-blosc talks about being faster than memcpy, and I have some goop using these properties, and this was how I understood what they were saying with blocking.
Cache hierarchies are compute that doesn’t waste space on being able to change bits. That capability is not free. I’ve always wanted RAM that could make small changes globally. Apparently, reduces to GPU’s?
This isn’t the worst way to model Spectre et al.

City traffic. Nothing happening inside a chip is not a bit in motion, routed as necessary and possible.

Sometimes there’s traffic. If you must never be delayed by someone else, find a city where there is no one else.
“You” in this case is not a process id or a user id or even user/supervisor ring.

It’s security domain, which is not really encoded systemically. It’s what would say a JS sandbox is not a renderer. It’s the boundaries being claimed.
Not all boundaries are security boundaries. That does not make them fake, nor is it (sometimes) for lack of trying. Some boundaries require too much bridging — those bits in motion keep needing to stop to put chains on, and off, and on, and off. At least, if you want security.
There are other boundaries. Stability boundaries. Windows used to crash entirely if a print driver screwed up. The code was moved out of the kernel and into userspace.

Was still a driver, could still do anything if it wanted. But it at least had to want to! And know how!
Most bugs have nothing to do with security. Software is built to do things that are useful to users, not to not do things that are useful to not users.

There are so many ways to not deliver to a user. Most of them involve moving parts — pieces of a system mismodeling others.
That mismodeling — those genuine and real bugs that wreck days just as well — is some exponential of the number of misunderstandings that occur at some rate between components.

So, stable interfaces are exposed.

They’re not security boundaries. They’re what a peer can expect.
Hackers don’t get to call up and be like UH, you took down RDP, how am I going to hack you, put it back

I’m sure someone has, but.

Engineers do call and ask why ssh is down. Or some web server. DNS. Much DNS.
Hackers don’t get to expect convenient paths, but designers don’t get to expect the only paths available are the ones that are convenient. At least not without extraordinary coverage of the unknown unknown. There’s no traffic because there’s nobody else.
A lot of this is stuff I’ve mulled for years and this is just me testing “everything is routing” against my other models. Works so far.
All things can be made analogies if you squint (trust me, it’s a party trick of mine). Question is if this is a load bearing analogy. Does it explain things more reliably, does it expose true things not otherwise obvious, does it imply things that are attractively incorrect?
If nothing else it puts interesting speed of light bounds on some computational architectures. It’s neat
This is connecting interestingly to deep learning architectures, that pipe bits, drop some, and at the end, are insanely compressible.
I don't know the straight line case vs spinning locally is easily meaningful as a direct perf predictor. It's correct literally but practicallyquantized clocks, contended resourcess, even subatomic spinning not linearizing that might break direct comparison. Maybe correctable?
I mean ultimately performance prediction is really only happening numerically because there's gobs of state in real world chips that doesn't show up in trivial models from CS class. In retrospect of course branch prediction is machine learning. How do you linearize that distance?
Apparently various SMM operations try twiddle the RDTSC clock to pretend they never happened.

That their road -- their computation, their branch -- was never taken.

I think the analogy works, and wonder where it goes. OK, it's valid and explanatory, what does it predict?
@danluu Think this works? Trying to smoke test this analytical frame.


OK, that's pretty cool. I just saw this post, how random weights to working AI networks perform much better than random.

Especially in the context of AI/Neural Architecture Search, this makes perfect sense. Weights are some of the routes, not all.
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Dan Kaminsky
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!