I'm happy to say that I'm uniquely qualified to help you. I have a BS in Computer Engineering and a MS in Electrical Engineering, with a specialty in VLSI and microelectronics. While in school, I had to design a microprocessor, one transistor at a time. Great experience, by the way. I will summarize this process from a Top-Down approach, in case you're a CS major. (Note that engineering is Bottom-Up!) - C/C++ gets co…
Ask HN: How does code get translated to voltage inside a CPU transistor?
11–20 of 23 posts
Re: Ask HN: How does code get translated to voltage inside a CPU transistor?
#12Point of note is that transistors are used in all three cases (flash memory, RAM and the CPU), but the voltage levels for 1's can be different in each case. The voltage level is part of the design of the flash/RAM/CPU. (For example, when designing a CPU, choosing a voltage level is a tradeoff between performance (higher voltage implies faster clock speeds) and power consumption (higher voltage drains the battery more)).
If you're asking when the 0's and 1's became voltage levels, the answer is that they were created as voltage levels in the first place. At the physical level, the 1's and 0's are always voltage levels. When you compiled your code, the code generated by the compiler was represented as voltage levels in the CPU, then was written to RAM, which again was in voltage levels, and then written to the SSD of your MacBook Air, which again is in voltage levels.
Re: Ask HN: How does code get translated to voltage inside a CPU transistor?
#13I'm happy to say that I'm uniquely qualified to help you. I have a BS in Computer Engineering and a MS in Electrical Engineering, with a specialty in VLSI and microelectronics. While in school, I had to design a microprocessor, one transistor at a time. Great experience, by the way. I will summarize this process from a Top-Down approach, in case you're a CS major. (Note that engineering is Bottom-Up!) - C/C++ gets co…
The boundary where pieces of code manage to control voltage. Where text crosses into electro magnetic flux. How does that happen?
"The boundary where pieces of code manage to control voltage."
I just explained how that works.If you're talking about external ports, then just think of them as bidirectional registers connected to the outside world.
This is literally all there is to it!!! "Where the text crosses into electro magnetic flux"
If you ignore crosstalk, which is caused by electromagnetic induction between the internal connections, then we can ASSUME that there is NO magnetic flux in DIGITAL microelectronics.
However, if you're dealing with ANALOG or MIXED-SIGNAl VLSI, then you will obviously have inductors (and resistors and capacitors) to manage the fequency components at various stages of your circuits.It's impossible to explain all this in 300 words. The three books I described ealier are all you need to become an expert in Digitial microelectronics. The Mano book deals strictly with discrete math, so if you don't have a strong background in Integral Calculus and Differential Equations, you can still learn a lot!
Here's some advise: If you're ever given the choice between Computer Science and Computer Engineering, pick Engineering. It's multiple orders-of-magnitude harder, but the rewards will be amazing.
It's like choosing to be a Pilot instead of a Flight Attendant. Trust me on that ;-))
Re: Ask HN: How does code get translated to voltage inside a CPU transistor?
#14Presumably, you're already familiar with how the text in your text editor gets converted to a binary representation. The code that gets stored in the iPad's flash memory is already represented in terms of voltages (See http://computer.howstuffworks.com/flash-memory1.htm ). To run the app, iOS shall load the code in the flash memory to RAM, where again it's represented as voltages (See http://www.howstuffworks.com/ram…
"At the physical level, the 1's and 0's are always voltage levels."
Let me throw you a curve ball: When we're dealing with DIGITAL logic, we're dealing with DISCRETE (and finite) values of SOMETHING - and it doesn't have to always be voltages.Just to wet your appetite, take a look at "Current-mode circuits". These are circuits whose logic values are represented by discrete current levels, not voltage levels. And by the way, this has Nothing to do with Ohm's Law.
Another example can be taken from digital communications. We have discrete finite levels for: amplitude, frequency, and phase. And I'm probably missing another component that can also be quantized, but it's been many years since I took that class.
Yes, I remember now: Duty Cycle, as used in Pulse Position Modulation and Pulse Width Modulation. These types of modulation are commonly discretized and used in digital communications. Also very common in analog systems.
Re: Ask HN: How does code get translated to voltage inside a CPU transistor?
#15Earlier quoted context omitted.
The boundary where pieces of code manage to control voltage. Where text crosses into electro magnetic flux. How does that happen?
"The boundary where pieces of code manage to control voltage." I just explained how that works.If you're talking about external ports, then just think of them as bidirectional registers connected to the outside world. This is literally all there is to it!!! "Where the text crosses into electro magnetic flux" If you ignore crosstalk, which is caused by electromagnetic induction between the internal connections, then w…
Re: Ask HN: How does code get translated to voltage inside a CPU transistor?
#16https://www.quora.com/Computer-Science/How-do-computers-work...
Re: Ask HN: How does code get translated to voltage inside a CPU transistor?
#17Re: Ask HN: How does code get translated to voltage inside a CPU transistor?
#18My thirst was not yet quenched, but my father didn't know what else to say, and I grew unpatient. Later in life I learned that the image projecten on the retina is then turned into electric impulses that go to the brain, are converted into a state of your psyche and perceived as an image coming from your senses.
For me it's a bit miraculous and divine how it happens. Back to your question: I don't really think that there is an answer to it, because even if you take a single letter on your screen, all the voltage shifts that happen inside of the machine are very complex, multiple hardware elements take part in it, there is the graphics processor and the screen, the different memory parts and the operating system that manages everything. In such a complicated structure it is very hard to say what actually happens that you can see a group of pixels on your screen that represents a letter "A". And even if you take a very simple microcontroller and a simple display there is quite a lot of operations going on inside, the data being stored, pushed through the arithmetic and logic unit, through the registers and so on. So there is no simple answer as the letter "a" is not a simple high voltage state in one single transistor, and even if you look at a really single byte or an electric impulse it probably does nothing at all.
Re: Ask HN: How does code get translated to voltage inside a CPU transistor?
#19Presumably, you're already familiar with how the text in your text editor gets converted to a binary representation. The code that gets stored in the iPad's flash memory is already represented in terms of voltages (See http://computer.howstuffworks.com/flash-memory1.htm ). To run the app, iOS shall load the code in the flash memory to RAM, where again it's represented as voltages (See http://www.howstuffworks.com/ram…
"At the physical level, the 1's and 0's are always voltage levels." Let me throw you a curve ball: When we're dealing with DIGITAL logic, we're dealing with DISCRETE (and finite) values of SOMETHING - and it doesn't have to always be voltages. Just to wet your appetite, take a look at "Current-mode circuits". These are circuits whose logic values are represented by discrete current levels, not voltage levels. And by…
Re: Ask HN: How does code get translated to voltage inside a CPU transistor?
#20When you strike a key on your keyboard, what happens? A few circuit lines on the keyboard switch matrix that are normally open become closed circuits. These circuits are inputs to a keyboard decoder chip such as a 74C922. It interprets voltage levels on these lines as 1's or 0's and produces what we call a scan code. This scan code is output serially to the PC over the keyboard connection by sending voltage levels that switch between 1 and 0 over time.
The PC contains a chip (a collection of transistors wired together) that we call a keyboard controller. It sequentially switches a number of transistors to read the incoming scan code bit by bit and store each bit in a flip-flop. We call this collection of flip-flops a register. The keyboard controller also drives voltages representing 1's and 0's onto some circuit lines that are wired into the CPU. We call this an interrupt. More transistors within the CPU will detect that interrupt signal and copy a pattern of 1's and 0's into a particular collection of flip-flops, which we call the program counter register. We now have the concept of an interrupt handler.
The CPU's transistors now drive the 1's and 0's in the program counter register (flip-flops) onto a group of circuit lines. We call that collection the memory address bus, and the pattern an address. The memory is itself a giant collection of flip-flops, a few (8 or 32 or whatever) of which are wired to respond to this pattern on the address bus and drive their contents onto another group of circuit lines that we call the data bus. These contents we call an opcode, and the pattern of this opcode we might call a port-read instruction. Inside the CPU, a particular group of transistors activates to execute this opcode, with the result of copying the contents of a particular port (the flip-flops in the keyboard controller) into a register within the CPU (more flip-flops.) Then the next opcode activates another group of transistors to copy the register flip-flops onto the memory bus, where the 1's and 0's latch into some more memory flip-flops. (There's more to interrupt handling than this of course, but that's the bare essentials.)
Do that many times and you might eventually have a sequence of memory flip-flops with a pattern of 1's and 0's representing a string such as PRINT "HELLO WORLD". But it's not that this text was converted into 1's and 0's. The 1's and 0's are the first principles. It's flip-flops and electric signals all the way down.
"Text" or "code" or "software" are merely abstractions we use to describe emergent behavior arising from groups of transistors shuffling around these 1's and 0's.