View text source at Wikipedia
This is the talk page for discussing improvements to the ARM architecture family article. This is not a forum for general discussion of the article's subject. |
Article policies
|
Find sources: Google (books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL |
This level-5 vital article is rated B-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||
|
Text and/or other creative content from this version of ARM architecture was copied or moved into List of ARM microprocessor cores with this edit on 13 June, 2011. The former page's history now serves to provide attribution for that content in the latter page, and it must not be deleted as long as the latter page exists. |
Text and/or other creative content from this version of ARM architecture was copied or moved into List of applications of ARM cores with this edit on 22 June, 2011. The former page's history now serves to provide attribution for that content in the latter page, and it must not be deleted as long as the latter page exists. |
This page has archives. Sections older than 720 days may be automatically archived by Lowercase sigmabot III when more than 4 sections are present. |
I've noticed that user User:JBMagination has changed all references to "ARM" in this article to sentence-case "Arm", citing company trademark policy. Doesn't this violate MOS:TM, as most sources still use Arm capitalized as "ARM"? ViperSnake151 Talk 21:45, 22 June 2020 (UTC)
For trademarks that are given in mixed or non-capitalization by their owners (such as adidas), follow the formatting and capitalization used by independent reliable sources.
Apart from anything else discussed just above, I would suggest altering the phrase "usually written as such today' to "often still written as such" NotesTracker (talk) 12:15, 20 September 2020 (UTC)
I've not yet read all the security paper saying: "The AMD Secure Processor, the gatekeeper responsible for the security of AMD processors, contains critical vulnerabilities." Note the AMD Platform Security Processor (I assume the same thing), built into their x86 CPUs, is ARM with TrustZone.
It's not clear that the ARM core and/or TrustZone (never looked to closely at it) is to blame and most reporting doesn't mention ARM but rather the non-open source code it runs. It seems it is to blame, possibly not the core running it. Be aware of that before blaming ARM here on this page; this is just FYI, and for discussion here.
Other links maybe helpful (first one where I discovered this before looking up the others):
https://www.wired.com/story/amd-backdoor-cts-labs-backlash/
https://hothardware.com/news/amd-processors-and-chipsets-ryzenfall-chimera-fallout-security-flaws
https://www.amd.com/en/technologies/security comp.arch (talk)
While great work was done with the gcd algorithm conversion from 'C' to assembler, the assembler variant actually implemented a do..while loop rather than the 'C' which shows a while..do loop.
The most important point here is that the GT/LT calculations were always being evaluated before the NE test was being made.
While the EQ test would mean that the comparisons would just fall through, adding the test label and a branch to test outside the loop reflects the C code far more closely. Note that the original 'else' part of the 'C' is also not reflected in the pseudocode/assembly.was implicitly baked into the assembly based upon the GT/LT flags set by the CMP.
There was a comment "(no if(a<b) needed since a!=b is checked in while condition)" which seems to have forgotten that the prior command may change the value of a. As SUBGTS/SUBLTS also tests/sets the condition registers, we only need to do the explicit CMP at the top of the code.
These edits are more congruent with the 'C', and represent more optimal code.
(20040302 (talk) 10:48, 16 March 2022 (UTC) )
Vincent Lefèvre, With respect, I couldn't agree with you less. It's correct that I should have used SUBGT/CMP pairs - but the logic of the original code is poor, and it is always important - when converting algorithms between languages / systems to replicate the underlying algorithm.
The fact that the current code switches from a while/do to a do/while is just an error. The code should choose just one, and keep to it. The inline rationale is unreasonable.
We see in the pseudocode that the "else" has now vanished - and therefore the algorithm is NOT the same (despite the comments) ...
if(GT) a-=B; if(LT) b -= a; //unwraps to two discrete if statements.
The assembly doesn't reflect the pseudocode either.
Instead it uses something more implicit to the original C - with the else being implied by the GT/LT test (being mutually exclusive).
Likewise, no consideration has been taken for timing. SUBGT is a 3pt operation whereas CMP is a 1pt operation.
Consider the following - (1) this follows a while..do, merely by branch to While at the beginning - a one instruction cost per function call, but saves time whenever r0/r1 start equal.
(2) with the addition of a cheap CMP we reflect the IF() found in the pseudocode, and likewise can afford to do both a r0-r1 and r1-r0 in a single loop. However, it is true it only saves a single loop, so I think it would be optimal to leave it out; but to do so it would be better to rewrite the pseudocode to use an else.
; assign a to register r0, b to r1
B While ; if the loop is not entered, we can safely return
Loop:
SUBGT r0, r0, r1 ; if "GT" (Greater Than), a = a-b. and set condition flags.
; CMP r0, r1 ; saves one loop at the cost of an instruction.
SUBLT r1, r1, r0 ; if "LT" (Less Than), b = b-a. and set condition flags.
While:
CMP r0, r1 ; compare a and b and set condition flags.
BNE Loop ; if "NE" (Not Equal), then loop
B lr ; if the loop is not entered, we can safely return
Regardless, (and mea culpa too) ALL of this violates WP:NOR. We should be citing sources, rather than discussing code styles. (20040302 (talk) 13:49, 17 March 2022 (UTC))
Does the CPU have cache? Why is this not addressed in this article? Is there some systemic problem at Wikipedia?
DO NOT PUBLISH IP 61.68.121.74 (talk) 12:45, 25 January 2023 (UTC)
ARM instruction set redirects here. Wouldn't it be better to list the instructions there? This page doesn't list the instructions, and I am looking for them, so I would greatly appreciate it. Joao003 (talk) 17:18, 17 October 2023 (UTC)
Is this true? Per the ARM2 data sheet (emphasis added): "A word load (LDR) should generate a word aligned address. An address offset from a word boundary will cause the data to be rotated into the register so that the addressed byte occupies bits 0 to 7. External hardware could perform a double access to memory to allow non-aligned word loads"
To me that doesn't sounds like "no support" as this article currently claims; it clearly farms the stuff of doing two 32-bit accesses and combining parts of each to external hardware but appears to offer a helping hand should the system be set up to do that — the external bus merely needs to gate each of the four bytes to ensure it presents each from the correct access, it doesn't need to rotate them into place.
I'd call this negligible support, but not "no support". 96.234.17.8 (talk) 18:19, 28 March 2024 (UTC)
I found that "ARM" has changed its name to "Arm", and now the documentation almost uses "Arm"
For example document: https://developer.arm.com/documentation/ddi0487/ka#:~:text=Arm%20Architecture%20Reference%20Manual%20for%20A-profile%20architecture.%20For%20a%20list ShiinaKaze (talk) 12:25, 25 September 2024 (UTC)
Research the following and if you find any details about the following, please include them with their sources:
1) ARMv9.6-M
2) ARMv9.6-R 78.190.164.190 (talk) 15:44, 4 December 2024 (UTC)