• Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Computer Architecture Help

Status
Not open for further replies.

wuchy143

Member
Hi All,

I recently took a new job in order to challenge myself as I was bored at my job and needed a change.

My first project at my new job I helped fix a DDR3 marginal timing issue with a CPU upon boot. Basically, at cold(-40C), the Real Time Operating System would not boot. So, it screamed timing so I used a DDR optimization tool provided by the manufacturer. It fixed the problem by adjusting the timing registers in the CPU to stop the bit errors occurring when the flash tries to remap into the DDR3.

I'm making slides to explain to people what I did and I'm realizing my understanding of how the architecture of a computer works isn't up to snuff for my job. For example I'm trying to explain how I changed the processor header file to adjust the timing registers. It gets fuzzy for me when after you compile the update and create a ".bin" file. So I know that the ".bin" file gets loaded into flash. Now, upon power up of the entire board(it's just a computer on a card), how does that ".bin" file make it over to the CPU so you actually change the settings? Does it get loaded once into internal memory on the CPU? Does it get loaded into registers internal to the CPU on power up ever time? Does the actual DDR hardware chip play a role?

I probably did a bad job of explaining but that's the status of my understanding in my head and want to improve upon it. Any help would be awesome. Point me to a bible for computer architecture to read when I'm not busy at work/home. I need to understand this stuff as I love my new job and want to perform the best that I can.

Thanks all!

Mike
 

dknguyen

Well-Known Member
Most Helpful Member
You're basically asking how a computer boots up? My understanding is that the CPU always jumps to a hard-wired address on boot-up. The instructions at this location could be the location that the CPU executes from indefinitely if it's a small program on a self-contained MCU. On a processor, these instructions might just be boot instructions that tell the processor to look elsewhere in memory (i.e. external non-volatile memory) and execute from there, or to grab data from non-volatile memory, either internal or external, and load it into RAM (either internal or external) and then continue executing from RAM. Of course if external RAM is used then there are other instructions in this same location that must be run first to tell the CPU what RAM is available for use beyond the internal RAM that is already present.

Is this flash internal or external? And does the CPU have some internal flash? I think CPUs that have internal flash but are intended to execute off external flash can be wired up so that it directly jumps to a preset address over the external bus, bypassing the internal flash entirely. Or the internal flash (which the CPU jumps to by default) is programmed separately from external flash to tell the CPU that external flash exists and there is stuff there to execute.

On a PC, all this stuff exists in the BIOS flash. PC CPUs are built to jump to a pre-defined address externally (since they have no internal ROM anyways) to which this BIOS flash is connected to. In turn, the BIOS flash tells the address on which harddrive to search for the OS, etc.

But I don't think that's what you're asking because I'm under the impression you already understand that. Is there some difference or special case about the timing register values in .bin file that you are unsure about? Maybe you feel like those values have to be somehow written before the CPU can execute any instructions at all?

Or are you not sure how the CPU header file which just contains values and no instructions ends up being executed by the CPU? If this one is the case, then the functions executing instructions that grab those header values are buried somewhere inside your compiler configuration files. But I'm under the impression you know that too?

Or do you just require a super detailed explanation for your presentation?
 
Last edited:
Status
Not open for further replies.

Latest threads

EE World Online Articles

Loading
Top