How does a digital software modify a physical integrated circuit?


How a program -something digital- can modify something physically?

In: 3

It can turn parts on and off. And in some rare cases you actually burn parts away on purpose (not consumer hardware)

Software is the state of hardware.

Computer hardware is a bunch of tiny switches that route electricity, and can be flipped on/off by electricity. Software is how they are currently flipped. That means changing the Software can (de)activate parts of your hardware, but can’t build new ones. Though it’s possible to build “general purpose” hardware where software kinda decides what it does.

Typically software just manipulates the charge/voltage in the hardware in a reversible way. Maybe there exists hardware that allows itself to be modified permanently by the software, but I’m not familiar with it if so, and I can’t think what the appeal would be.

It can’t. A program is just a *representation* of a physical system (of switches).

What the computer is actually doing is entirely physical…flipping switches on and off, charging and discharging capacitors, etc. Through clever wiring, we make the actions of some switches and capacitors and such influence the state of others. And we (the programmers) attach meaning to patterns of switches but the computer has *no* idea of any of that…it just does what the combination of switches and wiring dictates.

When you load a program you’re setting a whole bunch of switches and hitting the “Go” button.

Imagine a bunch of aqueducts, rivers, trenches, sluices, ravines, troughs, or pipes. All inter-connected with valves and gates and such.

Imagine the water flowing or not flowing through these things. Digital software physically modified circuits by flowing electricity through them. Sometimes there’s too much water and a little stream can overflow and get water everywhere. In a circuit, that would be a trace getting too hot and burning up

The flow of electricity is a real physical property. It’s just energy rather than matter.

Likewise, anything digital exists in real-space in a really real way as a patter of electrical signals with computer memory.

(Some chips like FPGAs can have their physical configuration altered by software. But those aren’t IC chips.)

I assume you’re talking about something like an FPGA? An FPGA has a bunch of physical circuits on it, way more than you normally need. You then use software to turn parts of it on and off and connect them together so that they perform a certain operation or calculation. The benefit of an FPGA is that if your operation or calculation is really specific, it can do it all at once instead of one step at a time like a normal CPU, which is generally faster. Also, if you need to change what operation or calculation you want the chip to do in the future, you can just update the software and now it does something else. The downside is that they’re really expensive because you’re paying for a bunch of circuits that you just leave off, and they use a lot of power because you haven’t optimized the circuits for minimum power consumption.