# The computer-architecture tag

I would use it for questions about designing a processor or other electronic circuit, and possibly for questions about the semantics of machine instructions.

I would not use it for question about the influence of processor differences on the behavior of algorithms, e.g. on questions about cache user (1 2).

Thoughts?

• -1, disagree. See comment on Kaveh's answer for reasoning. – Patrick87 Mar 26 '12 at 12:47

I think the tag is OK.

Questions related to optimization of programs related to computer architecture is also part of computer architecture (e.g. see this).

More generally, the goal of tags, as I understand it, is to help categorize questions and help users in finding/searching them. So if it is likely that a user would with the knowledge of an area is likely to search or answer the question then, IMHO, it is OK to use that tag for the question, particularly when they are high level subject classification tags like:

discrete-mathematics, combinatorics, complexity-theory, algorithms, data-structures, formal-languages (and automata theory), logic, computability, information-theory, numerical-analysis, symbolic-computation, cryptography, security, artificial-intelligence, machine-learning, computer-vision, computational-linguistics, natural-language-processing, knowledge-representation-reasoning, robotics, computational-geometry, computational-engineering (and science), computation-finance, databases, information-retrieval, distributed-computing, parallel-computing, neural-computing, evolutionary-computing, algorithmic-game-theory, computer-graphics, computer-architecture (or maybe hardware-architecture), computer-networks (and internet architecture), operating-systems, information-networks (and social-networks), human-computer-interaction, multimedia, sound, programming-languages, software-engineering, ...

• Those two questions are only very tangentially related to computer architecture, and cpu-cache already embodies the connection. I wouldn't think to search these questions under computer-architecture. Not every question needs to have every subject classification tag that may be relevant (we'd need far more than 5 tags if this was the intent). – Gilles 'SO- stop being evil' Mar 26 '12 at 10:48
• +1, agree with Kaveh. @Gilles While it's true that a question needn't be tagged with every applicable subject descriptor, cache design is one of the bread-and-butter areas of computer architecture... and the design of caches is inherently, fundamentally and inextricably linked to the memory access patterns of algorithms which access cache. I, for one, don't see any harm in allowing users to use the computer-architecture tag here; naturally, if users prefer the cpu-cache tag, let them use that. I say we see what the community decides, rather than prescribe behavior in this case. – Patrick87 Mar 26 '12 at 12:42
• As an addendum: while it's true that the design of algorithms assumes a certain underlying memory system and performance model, it is equally true that answering a question about the design of an algorithm for such a model requires an understanding of the model, hence, of computer-architecture. When a user asks a question about how to compute the complexity of Kruskal's MST-finding algorithm, should we disallow the tag graph-algorithms? You don't need to know anything about graph algorithms to answer that, provided that enough explanation is given in the question. – Patrick87 Mar 26 '12 at 12:47
• @Patrick87 Would you say an assumption like "The $k$ last accessed values are available at time cost $c_1$ while all others cost $c_2$." relate to computer architecture? I don't, and I don't need more to do a cache-aware runtime analysis. – Raphael Mod Mar 26 '12 at 12:51
• @Raphael Of course I would say that the statement you provide is related to computer architecture. It implies a certain (perhaps idealized) design of a cache-and-memory system, the performance of which influences application performance. Cache is one of the bread-and-butter areas of computer architecture; if answering a question about an algorithm's performance mentions caches, pipelines, I/O, etc. at all, it is a question related to computer architecture (about how computer architecture affects performance). You don't need to know about graph algorithms to analyze Kruskal's method, either... – Patrick87 Mar 26 '12 at 12:58
• @Patrick87: Well, I think that view is too broad. Tags should signify where the principal concerns of a question belong to. Otherwise we can put any tag on any question as most topics are related via not too many hops. – Raphael Mod Mar 26 '12 at 13:22
• @Patrick87 “I say we see what the community decides, rather than prescribe behavior in this case.” The community is in dispute, that's what we're here to resolve. I disagree with Kaveh's edits to add the tag on those two questions (one of them mine). – Gilles 'SO- stop being evil' Mar 26 '12 at 16:23
• @Gilles Yes, the community is in dispute, but my concern is in limiting the scope of the dispute from one which artificially limits the scope of the computer-architecture tag to one which involves a specific, disputed instance of retagging. I find the former scope much too broad, while I find the latter acceptable. Regarding the latter, I still tend to agree with Kaveh; if the question asks about cache, pipelines or I/O, hardware-software interaction, system-dependent performance, etc., I see nothing wrong with adding a computer-architecture tag. – Patrick87 Mar 26 '12 at 17:49
• @Gilles Frankly, I find Kaveh's adding the programming-languages tag much more objectionable than his adding the computer-architecture tag. – Patrick87 Mar 26 '12 at 17:50
• @Gilles, cpu-cache is too specific to be a one of area tags. It is a topic in computer-architecture and operating-systems. The goal of category tags is to have a small number of tags that will cover all questions so people can use them to filter their searches effectively. This is what is also enforced in many other places like arxiv. Every paper has to have one of the area tags. IMO, if you consider that cpu-cache tag is fine for the question, then computer-architecture tag should also be fine, since it is a superset of it. – Kaveh Mar 26 '12 at 17:56
• @Patrick87, I added that because of reference to garbage-collectors, garbage collectors are typically studied in programming-languages area and the reasoning is similar to the one I posted in the comment above. – Kaveh Mar 26 '12 at 17:57
• @Raphael: "Tags should signify where the principal concerns of a question belong to", I agree, but it doesn't rule out there should not be other uses for tags. If you mean that the tags should be used only in that way then I have to disagree. IMO, the category tags (which are not too many) should also be used to categorize the question. The tags are not for the OP (who already knows them and can explain in the question) but mainly for others as a way of filtering/searching questions for questions they are interested in. This will become more clear later when the number of users – Kaveh Mar 26 '12 at 18:02
• [cont.] reaches tens of thousands (hopefully) and the number of questions/answers per day will be too many for people to read all of them and a question will not stay on the main page for more than an hour. At that point an effective way of filtering questions will be needed and having these category tags where each question belongs to at least one of them will help a lot. Take a look at Mathematics to get a feeling where a question doesn't stay on the front page for more than 2 hours. – Kaveh Mar 26 '12 at 18:06
• [cont.] I am hoping and expecting that Computer Science will be even larger, most people will want to read questions only in specific topics. Having a reasonable and short list of category tags covering all questions will help a lot. – Kaveh Mar 26 '12 at 18:13
• @Kaveh A tag can be appropriate without a more general tag being appropriate. Tags indicate what a question is about; a question about caches is not necessarily about computer architecture (if you like, it's about direct relationships, not the transitive closure thereof). We only have 5 tags here, remember; often there will be more than 5 applicable category tags by your reasoning, so it can't work. – Gilles 'SO- stop being evil' Mar 26 '12 at 19:15

As I asked my question Research on evaluating the performance of cache-obliviousness in practice, I was initially looking for a tag "cache-oblivious". Such a tag exists on CSTheory, for example.

I'd have to agree with Raphael's answer. For example cache-obliviousness is not about computer architechtures. It is about analyzing algorithms and data structures on a hypothetical, idealized model of computation. In fact, one of the main points about being cache-oblivious is that you don't care or need to know the details of the underlying memory hierarchy. Sizes of the caches etc. can be whatever, they do not affect our asymptotic analysis there. In this sense, my question is not really about real caches or architechtures. They are something more concrete. In this way I also agree with the OP.

Maybe a more fitting tag for my question would be something that is about benchmarking something. I only wonder if such a tag exists.

• I looked at the second paper, it is categorized under experimental-algorithms on ACM DL. I still think that the computer-architecture is appropriate and can help people who might be interested in the question find it, but since you are the author feel free to remove it. – Kaveh Mar 26 '12 at 19:54
• @Kaveh True, you have a good point. I guess at least for the time being my question could also be tagged with computer-architechture. – Juho Mar 26 '12 at 20:57

I agree with Gilles' sentiment. Algorithm analysis uses models of memory hierarchies and does (usually) not refer to explicit computer architectures. Therefore, should not be used for questions on algorithms regarding cache efficiency.

Regarding searches, if I clicked on I would not expect to find questions on algorithms. I want questions that discuss (dis)advantages of computer architecture decisions, not algorithms.

• -1, disagree. See comment on Kaveh's answer for reasoning. – Patrick87 Mar 26 '12 at 12:47
• Raphael, optimization of algorithms with respect to specific hardware to use their features are part of computer-architecture, and cache is one of them such features. IMHO, the view expressed in the answer is too narrow. On the other hand, people working in algorithms are also interested in this topic. A question can be both in computer-architecture and algorithms, they are not disjoint topics. – Kaveh Mar 26 '12 at 17:50
• The point is that you do not have to consider specific hardware (architecture) in order to analyse an algorithm w.r.t. caches; all you need is the assumption that there is some kind of limited capacity short-term memory. – Raphael Mod Mar 26 '12 at 17:52
• @Raphael, it can be the case, but the question in its current form is not phrased that way, it explicitly refers to cpu-caches. If it was phrased as a theoretical question then I would probably agree with you, but at the moment it is asking about the performance in practice. In any case, it think it is very likely that a person working in computer-architectures would be interested and can answer the question. – Kaveh Mar 26 '12 at 18:29