Questions tagged [computer-architecture]

Computer architecture is the abstract description and specification of why, what, and how various hardware and software components are combined to create a computing device. This tag should be used with questions about the relationship between components making up a computer, what components are included or excluded in a computer, how components are connected, what data flows over the connections, and why components and connections are good choices.

Computer architecture is an area of study, research, and engineering of how hardware and software components can be selected, connected together, and operated to perform computations. Computer architecture is variously described as "a set of rules and methods that describe the functionality, organization, and implementation of computer systems" (Wikipedia topic Computer architecture) or as "a specification detailing how a set of software and hardware technology standards interact to form a computer system or platform" (Techopedia topic Computer architecture) or as "software standards, hardware instructions and technology infrastructure that defines how computer systems, platforms and programs operate" (Best Choices Schools What is Computer Architecture).

Questions using this tag would typically involve questions about computer design:

  • the hardware components of a computer and why those components are chosen

  • how hardware components are electrically connected and why connected in those ways

  • how the software of a computer is organized and the relationships between software and hardware

  • technology changes and how those changes influence computer design

61 questions
76
votes
7 answers

Are stacks the only reasonable way to structure programs?

Most architectures I've seen rely on a call stack to save/restore context before function calls. It's such a common paradigm that push and pop operations are built-in to most processors. Are there systems that work without a stack? If so, how do…
ConditionRacer
  • 5,682
  • 6
  • 38
  • 56
52
votes
4 answers

Has Little Endian won?

When teaching recently about the Big vs. Little Endian battle, a student asked whether it had been settled, and I realized I didn't know. Looking at the Wikipedia article, it seems that the most popular current OS/architecture pairs use Little…
37
votes
10 answers

What's the difference between a variable and a memory location?

Recently I've been trying to explain pointers in a visual way, as flashcards. Question 001: This is the drawing of a location in computer memory. Is it true that its address is 0x23452? Why? Answer: Yes, because 0x23452 describes where the…
progner
  • 523
  • 1
  • 4
  • 7
19
votes
2 answers

How long is a typical modern microprocessor pipeline?

I learnt some about pipelining but those were 4-stage and 5-stage and I think that modern pipelining typical is much longer and more complicated in practice. How long are typical pipelines and how much can we expect them to increase and where is the…
Niklas Rosencrantz
  • 8,008
  • 17
  • 56
  • 95
15
votes
4 answers

Can increased usage of higher and higher programming languages lead to a deficit of programmers with computer architecture knowledge?

Quote from Wikipedia of the article "High-level programming language": A high-level programming language is a programming language with strong abstraction from the details of the computer. In comparison to low-level programming languages, it may…
14
votes
5 answers

How can I tell whether my computer is Harvard or von Neumann architecture?

I understand the difference between the two architectures is the separation of instructions from data in the Harvard architecture. But how do I know which type of system I'm on? Is it possible to write a program such that the program determines…
Niklas Rosencrantz
  • 8,008
  • 17
  • 56
  • 95
13
votes
9 answers

How does understanding computer architecture help a programmer?

It is said, by Mike P. Wittie, in the course curriculum of computer architecture that, Students need to understand computer architecture in order to structure a program so that it runs more efficiently on a real machine I'm asking to more…
Varaquilex
  • 534
  • 2
  • 5
  • 14
12
votes
8 answers

Learning computer architecture as a programmer

I typically run across gurus at SO and other places (instructors, book authors etc.) that would say something along the lines "This will cause alignment issues" or other low level tidbits. I want to learn about all these tidbits that are relevant…
Samaursa
  • 255
  • 1
  • 2
  • 7
11
votes
1 answer

How does the Base Address Registers (BARs) in a PCI card work?

I am trying to understand how the Base Address Registers (BARs) in a PCI card work, this is how I think they work: Each function in a PCI card have 6 BAR fields, and each BAR field is 32-bit in size. The PCI card manufacturer will write in each BAR…
Christopher
  • 2,029
  • 3
  • 13
  • 16
10
votes
2 answers

Are there alternatives to stack+heap+static memory model?

All programs I have seen organize their data memory into one or more call stacks (usually fixed size, but sometimes not), the heap, and static memory. Lately thread-local static storage has been added to this as well. Have there been any attempts…
ikh
  • 928
  • 7
  • 15
9
votes
1 answer

Computer Architectures NOT based on arrays

Wadler's original paper on Monads for Functional Programming ( Haskell ) ,he says Another question with a long history is whether it is desirable to base programs on array update. Since so much effort has gone into developing algorithms and…
8
votes
1 answer

How are operating systems compiled and booted the very first time?

I'm interested in how operating systems work. I've been reading some articles about Linux and seem to understand how it all generally comes together, but I feel like there's a chicken and egg dilemma when it comes to constructing an operating…
Leo
  • 191
  • 1
  • 5
7
votes
2 answers

What are best practices for enterprise software, should a developer be able to login as one of its users? (when its your own company)

My company has its own proprietary software that I have both built and maintained over the last 5 years I am about to release a big change for all of my software to use OAuth2 instead of handling emails and passwords ourselves. Prior to this release…
alilland
  • 289
  • 1
  • 6
7
votes
2 answers

How did heavy software in the early days managed to run on 4MB RAM computer?

It's no secret that in the early days of computers, they had only 1-4MB of RAM. I found an article stating you needed only 4MB of RAM to run Word, Excel and PowerPoint simultaneously. How was that possible, considering that nowadays you need at…
7
votes
1 answer

Hardware that accelerates pointer dereferencing?

Most modern languages make a heavy use of pointers / references: a typical OOP language uses VMT lookups, a typical functional language builds key data structures out of pointers, etc. Even typical C code often sports things like foo->bar->baz. It…
9000
  • 24,162
  • 4
  • 51
  • 79
1
2 3 4 5