Jump to content

Talk:X86-64: Difference between revisions

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
Content deleted Content added
Line 96: Line 96:
:This is similar to other ISAs that have 32-bit and 64-bit modes, with the exception of ARM - there are 32-bit and 64-bit modes. 64-bit mode in x86 adds some additional capabilities that aren't available in code for 32-bit mode, such as additional GPRs and PC-relative addressing, so there's a bit more difference between the two modes than is the case for SPARC/MIPS/PA-RISC/Power ISA/{IBM mainframe}, but not a ''lot'' more - the instruction encodings are 99 44/100% the same. (ARM is an exception; ARM themselves speak of ''three'' instruction sets in AArch64 - A32, the traditional 32-bit ARM; T32, with Thumb and Thumb-2 encodings, and A64, which is ''significantly'' different from A32, given that, for example, it gets rid of most if not all of the predicated execution stuff.) [[User:Guy Harris|Guy Harris]] ([[User talk:Guy Harris|talk]]) 03:14, 4 January 2020 (UTC)
:This is similar to other ISAs that have 32-bit and 64-bit modes, with the exception of ARM - there are 32-bit and 64-bit modes. 64-bit mode in x86 adds some additional capabilities that aren't available in code for 32-bit mode, such as additional GPRs and PC-relative addressing, so there's a bit more difference between the two modes than is the case for SPARC/MIPS/PA-RISC/Power ISA/{IBM mainframe}, but not a ''lot'' more - the instruction encodings are 99 44/100% the same. (ARM is an exception; ARM themselves speak of ''three'' instruction sets in AArch64 - A32, the traditional 32-bit ARM; T32, with Thumb and Thumb-2 encodings, and A64, which is ''significantly'' different from A32, given that, for example, it gets rid of most if not all of the predicated execution stuff.) [[User:Guy Harris|Guy Harris]] ([[User talk:Guy Harris|talk]]) 03:14, 4 January 2020 (UTC)


::Thank you for your reply, but I just reserve your viewpoint! The only thing you emphasised for years, that you believe the x86 architecture has already been formed in its 64-bit mode, and you believe the AMD64 architecture is just one version of x86! But in fact, it isn't! AMD just developped a 64-bit prototype of x86 architecture, leaving the original x86 without touched or even modified. From this very viewpoint, the instruction set belonging to the long mode could only be counted as the 64-bit instruction set of x86-64, or 64-bit instruction set in x86. One could not use the results as the reasons! Instruction Set Architecture is not identical to Instruction Set, the x86-64 is not only additional instruction set like SSE, AVX and so forth, it is a completely an Instruction Set Architecture, standalone above x86. So one could not say it is merely the 64-bit version of x86 instruction set, and in fact it is not! [[Special:Contributions/119.53.106.136|119.53.106.136]] ([[User talk:119.53.106.136|talk]]) 03:37, 4 January 2020 (UTC)
::Thank you for your reply, but I just reserve your viewpoint! The only thing you emphasised for years, that you believe the x86 architecture has already been formed in its 64-bit version, and you believe the AMD64 architecture is just one version of x86! But in fact, it isn't! AMD just developped a 64-bit prototype of x86 architecture, leaving the original x86 without touched or even modified. From this very viewpoint, the instruction set belonging to the long mode could only be counted as the 64-bit instruction set of x86-64, or 64-bit instruction set in x86. One could not use the results as the reasons! Instruction Set Architecture is not identical to Instruction Set, the x86-64 is not only additional instruction set like SSE, AVX and so forth, it is a completely an Instruction Set Architecture, standalone above x86. So one could not say it is merely the 64-bit version of x86 instruction set, and in fact it is not! [[Special:Contributions/119.53.106.136|119.53.106.136]] ([[User talk:119.53.106.136|talk]]) 03:37, 4 January 2020 (UTC)

Revision as of 03:40, 4 January 2020

Template:Vital article

WikiProject iconComputing C‑class High‑importance
WikiProject iconThis article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
CThis article has been rated as C-class on Wikipedia's content assessment scale.
HighThis article has been rated as High-importance on the project's importance scale.
Taskforce icon
This article is supported by Computer hardware task force (assessed as High-importance).



Correct naming - x64 and Intel 64

About the naming in the very first line; I think it should be distinguished that "x64" is NOT a correct way of referring to the 64-bit x86 (and to a certain extent neither is "Intel 64", although Intel themselves use it; it implies Intel's 64-bit Itanium which does exist, as much as some would like to forget it). I've seen many people confused why the 32-bit version is x86 and not x32 when the 64-bit is called x64; it's of course not x64 and this leads to initial confusion. I wouldn't like to see the same situation that we got when x86 was extended from a 16-bit address space pointers to a 32-bit one but it was still called "x86" and not e.g. "x86-32" to indicate the change. We indicate(d) other extentions (SSE, MMX), so why not something as big as the extention of address space? It's a small thing and you'd be right to say I'm getting hung up on naming, but I'd argue language and naming things is something very important since that's what allows us to communicate, learn and discuss; neglecting to name things correctly inevitebly leads to problems when we try to do the three things mentioned. I propose just a small change, such as "also known as x86_64, AMD64, incorrectly as x64, Intel 64" while leaving the note in place. — Preceding unsigned comment added by 85.163.18.131 (talk) 12:52, 22 July 2018 (UTC)[reply]

Who defines what's "correct"? AMD? Intel? AMD and Intel?
x64 may not be used by AMD or Intel, but it is used by Microsoft and Sun^WOracle, so, "correct" or not, it is used, and that probably should be noted.
Intel uses "Intel 64"; it doesn't imply Itanium - some people might incorrectly infer Itanium, but those people may not be aware that the Itanium architecture used to be called "IA-64", with the existing 32-bit version of x86 being called "IA-32". That meant that Intel couldn't call their flavor of x86-64 "IA-64" and they wanted to come up with some name for their flavor of x86-64; "AMD64" was unlikely to be chosen, for obvious reasons, so they imitated AMD and called it "Intel 64".
So, for better or worse, it's referred to as "x64" and "Intel 64" by organizations whose use can't simply be dismissed as "incorrect". Yes, those names may cause confusion, but that's what happens with names chosen by marketing departments; it's just something we have to live with, because Wikipedia is extremely unlikely to be able to effect any change there. Guy Harris (talk) 20:27, 22 July 2018 (UTC)[reply]
Agree with Guy Harris. x64 is very commonly used in the industry. We're not in a place to declare that it's "wrong". Jeh (talk) 04:58, 23 July 2018 (UTC)[reply]
My line of thinking was: the x86 name comes from the x86 naming of Intel's processors (80286 and 80286, 286 and 386 for short, hence x86), where does x64 come from? I don't remember an iconic line of processors using a similar naming scheme, the closest that comes to mind is the Athlon 64 line. Again, I'm being pedantic but as I already stated, there's nothing wrong with pointing wrong (or at least illogical) naming, regardless whether a couple of "industry leaders" use it. I also take back labeling Intel 64 as incorrect (although it still is illogical, Intel Architecture 32 is the 32-bit x86, IA-64 is Itanium, AMD64 is the widely implemented 64-bit x86 extention; Intel 64 = Itanium, AMD 64 = x86-64, seems simple enough for me). — Preceding unsigned comment added by 85.163.18.131 (talk) 08:15, 23 July 2018 (UTC)[reply]
I have no clue how marketing-department minds work, so I have no clue where "x64" comes from - and my curiosity about it is mild, at best. Why didn't IBM go from "System/370" to "System/380" when they added 31-bit-addressing support in 1980, but went with "System/390" in 1990 when no change that significant was made, for example? Or why did Apple go from "Mac OS X" to "OS X", several years after a non-Mac derivative, iOS, came out, rather than just going directly to "macOS"? Illogical, maybe, but, even if a lot of people might find a name illogical, I don't see any need for the Wikipedia to point that out. Guy Harris (talk) 11:15, 23 July 2018 (UTC)[reply]
To the IP: If Wikipedia were to state in its own voice that the "x64" name was "wrong" or even "illogical", regardless of reasoning, then Wikipedia would be expressing an opinion. We don't do that. See WP:NOTESSAY, which is part of our policy. We can report on opinions of recognized experts, but WP:N then requires that we give WP:DUE attention to all countering opinions, other than WP:FRINGE ones. And given the popularity of the "x64" name I'd say yours qualifies as WP:FRINGE. So, what can you do? Write your opinion on your own blog, or on a Facebook post, or maybe write it up and send it to a tech blog. But Wikipedia is not the place for your opinion or even your own reasoning. In fact, since article talk pages are not for general discussion about a topic but are supposed to be specifically for discussing improving the article, and an editor's opinion will not ever be allowed as part of the article, even the discussion here is borderline. Jeh (talk) 12:42, 23 July 2018 (UTC)[reply]

Is it also aa64?

aa64 is mentioned, for example, at https://github.com/pbatard/uefi-simple/commit/3250411a643b8967d9ed724219a33aa8af3855f7 and http://lkml.iu.edu/hypermail/linux/kernel/0008.1/0809.html. My guess is it is an abbreviation for AMD Architecture 64. And yet another abbreviation for x86-64. Is it justified to add this acronym to the x86-64 entry? — Preceding unsigned comment added by 5.102.216.121 (talk) 18:24, 11 March 2019 (UTC)[reply]

No. "mentions" in Github commits, esp from .edu , are not reliable sources. Wikipedia is not for things someone made up one day. When you see this used routinely in mainstream industry publications we can think about whether it merits as much as a mention. Jeh (talk) 18:56, 11 March 2019 (UTC)[reply]
And, at least in the uefi-simple GitHub site, it's an abbreviation for AArch64, i.e. the 64-bit ARM whatever-AArch64-and-AArch32-are (as opposed to the 64-bit ARM instruction set, which is A64, and the two 32-bit ARM instruction sets, which are A32 and T32, at least in AArch32).
In the LKML message, it appears to be x86-64/AMD64, but there's no indication where the person who sent the original message got "aa64" from - perhaps AMD used it at one point, but they mainly used x86-64 originally, and then switched to AMD64.
So, without anything more than one short thread on LKML, and with at least one place using "aa64" to refer to 64-bit ARM rather than 64-bit x86, I wouldn't include it. Guy Harris (talk) 19:08, 11 March 2019 (UTC)[reply]

Which was first?

According to the lead,

"The AMD K8 processor was the first to implement it."

According to the History section,

"The first AMD64-based processor, the Opteron, was released in April 2003."

Neither is cited. Wasn't K8 an architecture, rather than a processor? It's article suggests so, in which case would it be correct to say that "the first AMD64-based architecture was AMD K8" and "the first AMD64-based processor was the K8-based Opteron, released in April 2003"? 87.75.117.183 (talk) 00:35, 25 June 2019 (UTC)[reply]

Yes, AMD K8 was a microarchitecture, not a processor. That paragraph mainly talks about microarchitectures, so I changed it to speak of the K8 microarchitecture as being the first to implement x86-64, and gave both Opteron and Athlon64 as examples of processors using that microarchitecture. Guy Harris (talk) 03:15, 25 June 2019 (UTC)[reply]
That makes sense now. Thanks. 87.75.117.183 (talk) 05:52, 26 June 2019 (UTC)[reply]

x86_64 Is Not The 64-bit Version of x86 Instruction Set!

Please read the official documents from both AMD and Intel, both ISA manuals stat that the relationship between x86_64 and x86 are two ISA but not one! Intel calls it as Intel 64, different from IA-32; while AMD calls it as AMD64, extended and backward compatible with x86! So they are two related architectures, ISA exactly! For the similarity and the base of the design of AMD64 architecture, in Intel document, it says this thing, 64-bit mode could be treated as 64-bit mode in IA-32 architecture (page 63, Volume 1:Basic Architecture). So it isn't some a version of x86 architecture, but a 64-bit related architecture with x86. So in this viewpoint, the precise and correct description should be

x86-64 (also known as x64, x86_64, AMD64 and Intel 64[note 1]) is the 64-bit instruction set in the x86.

rather than

x86-64 (also known as x64, x86_64, AMD64 and Intel 64[note 1]) is the 64-bit version of the x86 instruction set.

The latter implies the x86 architecture is a 64-bit architecture, but in fact the x86 architecture still remains in its 32-bit form, had never been changed, reserved for later development in the future! Word "in" could be more used to describe the relationship between them two, the related two things rather than one! 119.53.106.136 (talk) 02:21, 4 January 2020 (UTC)[reply]

If we look at Intel 64 and IA-32 Architectures Software Developer’s Manual, Volume 1: Basic Architecture, in chapter 2, "Intel 64 and IA-32 Architectures", Intel just speaks of the "Intel Instruction Set Architecture", not of multiple instruction set architectures. Chapter 5, "Instruction Set Summary", doesn't have separate sections for IA-32 and Intel 64 instructions; they just indicate which processors support which "instruction groups", e.g. "All Intel 64 and IA-32 processors" support the "General Purpose" instructions. (The table is a bit confusing, as it has a bunch of "instruction groups", the instructions in which are supported by all 64-bit processors but not all 32-bit processors, so those groups list only the 32-bit processors that support them as well as some but not all 64-bit processors.)
And if we look at the three sections of Volume 2: Instruction Set Reference, there's only one description of each instruction - there aren't separate descriptions for IA-32 and Intel 64, they just have, for each instruction, a table giving various encodings for the instruction, the behavior of the instruction with that encoding (giving, for example, the operand length), and columns indicating whether a given encoding is valid in 64-bit mode and whether it's valid in 32-bit compatibility/legacy/"this is all you get with an IA-32 processor" mode. (The description of the INC instruction notes that certain encodings aren't valid in 64-bit mode because they're interpreted as a REX prefix in that mode; however, there are other encodings for the same operation.)
So Intel's documentation doesn't seem to speak of two instruction sets, just one instruction set, which, in Intel 64 processors, has multiple modes - 64-bit/long mode, 32-bit compatibility mode, and 32-bit legacy mode (the latter is the only available mode in IA-32 processors).
AMD64 Architecture Programmer’s Manual, Volume 1: Application Programming speaks of "the AMD64 architecture" as a "64-bit, backward-compatible extension of the industry-standard (legacy) x86 architecture". It speaks of "the AMD64 instruction set architecture"; it says nothing about any other instruction set, whether it's "IA-32" or whatever.
So AMD's documentation doesn't explicitly speak of two instruction sets, either, although they try to draw more of a distinction between 32-bit and 64-bit machines - not surprising, given that the 64-bit mode and its additions to the instruction set were their creations, so they'd want to promote it.
This is similar to other ISAs that have 32-bit and 64-bit modes, with the exception of ARM - there are 32-bit and 64-bit modes. 64-bit mode in x86 adds some additional capabilities that aren't available in code for 32-bit mode, such as additional GPRs and PC-relative addressing, so there's a bit more difference between the two modes than is the case for SPARC/MIPS/PA-RISC/Power ISA/{IBM mainframe}, but not a lot more - the instruction encodings are 99 44/100% the same. (ARM is an exception; ARM themselves speak of three instruction sets in AArch64 - A32, the traditional 32-bit ARM; T32, with Thumb and Thumb-2 encodings, and A64, which is significantly different from A32, given that, for example, it gets rid of most if not all of the predicated execution stuff.) Guy Harris (talk) 03:14, 4 January 2020 (UTC)[reply]
Thank you for your reply, but I just reserve your viewpoint! The only thing you emphasised for years, that you believe the x86 architecture has already been formed in its 64-bit version, and you believe the AMD64 architecture is just one version of x86! But in fact, it isn't! AMD just developped a 64-bit prototype of x86 architecture, leaving the original x86 without touched or even modified. From this very viewpoint, the instruction set belonging to the long mode could only be counted as the 64-bit instruction set of x86-64, or 64-bit instruction set in x86. One could not use the results as the reasons! Instruction Set Architecture is not identical to Instruction Set, the x86-64 is not only additional instruction set like SSE, AVX and so forth, it is a completely an Instruction Set Architecture, standalone above x86. So one could not say it is merely the 64-bit version of x86 instruction set, and in fact it is not! 119.53.106.136 (talk) 03:37, 4 January 2020 (UTC)[reply]