Talk:MCS-51
This article is rated C-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||
|
This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later. |
On 23 March 2021, it was proposed that this article be moved to 8051. The result of the discussion was not moved. |
History/market Impact
editGive the large commercial impact this chip had, it seems that a paragraph or section on the history, release dates, roll-out, early products, historical sales figures , etc would be useful. Anybody know this?? — Preceding unsigned comment added by 204.128.192.31 (talk) 18:00, 11 February 2015 (UTC)
8051 Oral Panel
editInterview with 8051 designers. Is the link worthwhile enough to be included in the 8051 page? http://www.computerhistory.org/collections/accession/102658339 I leave the decision to wikipedia maintainers (this note added 2010-01-16) http://archive.computerhistory.org/resources/text/Oral_History/Intel_8051/102658339.05.01.acc.pdf
64k of memory, eh?
editHow is it possible to adress 64k each of RAM and ROM (that would equal 128k in total) with a 16 bit adress bus? Is there a line on the control bus or something to with a simple bank-switch kind of thing? Wilsonsamm (talk) 20:08, 2 October 2008 (UTC)
The 8051 has a harvard architecture. Please follow the corresponding link in the article. --89.15.178.202 ([[User talk:89.15.178.202 20:48, 26 November 2008
8051 architecture
editIs 8051 a CISC or RISC machine? Is 8051 a Harvard architecture? —The preceding unsigned comment was added by 61.17.44.86 (talk) 08:05, 29 January 2007 (UTC).
- The use of register windows and the large register space (called, in the article, "IRAM") are RISC features and are atypical for microcontroller CPU's (e.g. 6809 or 68HC11) or desktop CPU's (e.g. the 68x00 or 80x86). The IRAM space is mostly, but not wholly a bona fide register space. Unary operations can typically be done directly on or with IRAM registers as well as the accumulator A. Binary register-to-register operations usually require A to be one of the registers, but the "mov" operation can be done directly IRAM to IRAM. Binary operations with constants, like unary operations, can generally be done directly with IRAM as much as they can with the accumulator A. — Preceding unsigned comment added by 65.29.226.169 (talk) 05:45, 26 March 2023 (UTC)
The 8051 is definitely a CISC machine. Its instruction set is wide and varied with lots of addressing modes and only a few registers. RISC machines typically have a much smaller instruction set and a bank of 16 or 32 registers. RISC machines typically only operate on data in the registers and have a "load/store" architecture. The 8051 instruction set mostly operates on the Accumulator and values in memory. Thus, the 8051 is CISC.
The 8051 is considered a Harvard Architecture machine because it has separate code and data spaces. Depending on the implementation however, it can be either Harvard or von-neumann. Older versions of the 8051 are more often van-neumann in that the CPU takes several clock cycles to fetch each operand/instruction individually. Newer single-cycle 8051s are often Harvard so they can get higher performance. The Harvard architecture allows the Instruction and the operands to be fetched in the same cycle. 68.189.241.68 (talk) 14:28, 24 February 2008 (UTC)
- At least with the ROM based variants, the original 8051 could be considered Harvard (and was described as such in the microprocessors course I took in college) in that you could not read from the program address space with normal data read instructions. It was its own address space, and one presumes there was a separate, dedicated path for program fetches. There are special "table lookup" instructions that allow you to read data from the program space, though. Also, on external fetches, the original 8051 CPU would indicate whether it was fetching program or data, so you could continue to keep those address spaces separate even for external memory. That said, once accesses go over the external bus, program and data busses are merged and so are no longer separate busses, and so it does look von Neumann-ish at that point. If a given design ignores the program/data indicator, the two address spaces merge for those external fetches, like in any other von Neumann-style architecture. Note that I limit my comments to the original 8051. I haven't used any of the modern variants so I cannot comment on them. --Mr z (talk) 07:03, 3 September 2008 (UTC)
8051 has a von Neumann architecture and not the Harvard architecture —Preceding unsigned comment added by 123.238.27.95 (talk) 19:32, 7 December 2008 (UTC)
- The CPU sees the code and data spaces as separate, with the former only accessed via "MOVC" (read-only), the latter via "MOVX" (read or write). Separate signalling are involved for these operations - which is the defining condition for the Harvard architecture, in contrast to the von Neumann architecture. It is entirely possible for the CPU to be wired into a mother board in a way that routes the external code space to the same physical device as the external data space, and it is a common configuration, though not optimal. Nonetheless, as far as the CPU is concerned, "MOVC" and "MOVX" access different memory spaces. — Preceding unsigned comment added by 65.29.226.169 (talk) 05:53, 26 March 2023 (UTC)
thank you intel —Preceding unsigned comment added by 217.219.35.2 (talk) 06:31, 13 May 2009 (UTC)
license
editI heard a rumor that the 8051 has somehow fallen into the public domain. Is that true? If so, this processor should be listed at open hardware#CPU. Or is Intel still selling the 8051 design under NDA licenses, even though it no longer fabs the chip? Something like ARM Holdings sells CPU designs but does not fab any chips? --68.0.124.33 (talk) 14:13, 13 August 2009 (UTC)
Various versions
editCould we start listing various versions and manufacturers here somehow? A few have wp pages and links lead here but there's no line back to specific/super/modern versions. —Preceding unsigned comment added by Blades (talk • contribs) 12:43, 22 October 2009
- I don't think that such details are desirable in an encyclopedia article. Lists of such details seem to me to be contrary to the general spirit of several sections of Wikipedia:What Wikipedia is not, even though, as far as I know, this particular case is not explicitly mentioned there. JamesBWatson (talk) 14:05, 24 October 2009 (UTC)
- There are more than enough vendors listed already, IMO. --69.226.238.251 (talk) 00:13, 25 November 2009 (UTC)
Memory architecture
editThe discussion of the memory architecture could use a little more detail. There is direct RAM, indirect RAM, SFR's, external RAM, and program memory, plus the bit-addressable feature of part of the RAM and some of the SFR's. I will add a section to the article in the near future, as it seems important to understanding the architecture. Pfagerburg (talk) 05:06, 13 November 2009 (UTC)
- Done. Community feedback will be greatly welcomed. Pfagerburg (talk) 04:03, 14 November 2009 (UTC)
I programmed 8051-architecture processors extensively 1987-1991 and, in particular, the 80C152. I wanted to add a little color.
The IRAM is accessed with hard-coded direct addresses. With a pure Harvard Architecture, this means you need 256 instructions to dump the 256 bytes of IRAM. Instead, I wrote self-modifying code. By having RAM in the instruction address space, I was able to read the 256 bytes with a simple loop. Yeah, you're never supposed to do this, but it worked fine. (I disabled interrupts to ensure that the short self-modifiable section ran as an atomic operation.) I don't recall if I implemented a POKE function similarly, but it would not surprise me.
With RAM in the instruction space, I also created a simple means to upload code through the terminal and hook it either into the main process or the timer interrupt. It saved scads of development time.
You never think about this sort of thing today, but this was 30 years ago... and it was an 8051 (which is just not a modern architecture). But, that said, I built the first packet-oriented voice (i.e., VOIP) phone in Bell Labs using it! — Preceding unsigned comment added by 96.233.64.220 (talk) 01:14, 22 March 2018 (UTC)
Instruction set mnemonics possible copyvio?
editI disagree that a processor instruction set is copyrightable.
However, Intel has claimed (still does claim?) copyright on the 8051 instruction set, and I am unsure if its inclusion in this article is allowable, even with the copyright notice included. (It certainly doesn't say "used by permission.")
Copyright query
edit{{Cv-unsure|url=http://en.wikipedia.org/w/index.php?title=Intel_8051&oldid=291340288|date= November 2009}} Pfagerburg (talk)
I'm also not sure that section belongs in the main article anyway, c.f. Atmel AVR and Atmel AVR instruction set. Regards, Pfagerburg (talk) 05:19, 13 November 2009 (UTC)
- I don't think we need pay too much concern to this issue. For a start it the intention behind behind claiming copyright on an instruction set is to prevent copying of the instruction set (i.e. prevent the manufacture of clone devices), not to prevent documentation of that instruction set. However, it is also now generally accepted that instruction sets are not copywritable, as evidenced by the range of x86 and indeed 8051 clones. As even Intel acknowledge at [1] (section 2.1.1):
While any imitator of the Intel Architecture can provide the CPUID instruction...
- That is a slightly different context since it does of course refer to the x86 architecture, but it is exactly the same issue. CrispMuncher (talk) 13:17, 13 November 2009 (UTC)
- Thanks for your input. Every 8051 datasheet I have seen includes Intel's copyright notice with the instruction set table. I'm not saying that the instruction set list in the article is copyright infringement; I'm simply not sure and would like to hear from others (obviously including you now). Pfagerburg (talk) 01:50, 14 November 2009 (UTC)
I think it would be more helpful to have the article discuss the types of instructions that are available, and the many and varied addressing modes, rather than just a list of the instructions. This could replace the instruction set list, which could be deleted, moved to a separate article, or even pointed off-wiki. I'm willing, but what does the community think? Would it improve the article? Pfagerburg (talk) 03:21, 14 November 2009 (UTC)
- I agree that reproducing the entire mnemonic list is unnecessary. I don't think copyright would prevent using some mnemonics as part of a discussion of the types of operations and addressing modes—the Zilog Z80 article already does something like this—and it would be more helpful for the majority of readers. Thanks for offering! - Pointillist (talk) 14:51, 14 November 2009 (UTC)
Here's a very rough start of what I'd like to put in for addressing modes:
- register - R0 - R7, ACC
- direct memory (IRAM up to 0x7F, SFR's from 0x80 to 0xFF)
- indirect memory (IRAM from 0 to 0xFF, XRAM up to 0xFF or all of XRAM, depending on the instruction)
- bitwise (IRAM from 0x20 to 0x2F, SFR's 0x80, 0x88, 0x90, 0x98, etc.)
There's a lot of special cases, particularly on indirect memory, so that list isn't in a terribly good format right now. Pfagerburg (talk) 18:05, 14 November 2009 (UTC)
For instructions, I'd like to break them down into categories.
- Arithmetic
- add with or without carry
- subtract
- increment, decrement
- 8 x 8 multiply
- 8 / 8 divide
- decimal adjust (for handling BCD values)
- Logic
- bitwise AND, OR, XOR
- add, subtract
- clear to zero
- complement (bitwise negate)
- rotate right or left, with or without carry
- nibble swap
- Boolean operations (single bit)
- AND, OR
- clear, set, complement
- Data Movement
- move (load or store, depending on the operands)
- move constant (load from program memory)
- push and pop
- exchange
- Control flow
- Jump
- Call and return
- Return from interrupt
- Conditional jumps - zero/not zero, carry set/clear, bit set/clear
- Compare and jump if not equal
- Decrement and jump if not zero
- NOP - no operation
Again, there's special cases, which one would need to know about, but presumably an implementer will have the chip datasheet available and can refer to it for the more minute details. Pfagerburg (talk) 18:18, 14 November 2009 (UTC)
- Pfagerburg, that looks very comprehensive, but please be careful not to put too much time and effort into it. After all, Wikipedia is not a manual, and the 8080, 6800, 6502, 6809 and Z80 articles don't have as much detail as perhaps you are proposing. And with that amount of material you'd need a lot of citations to avoid being accused of original research! Good luck - Pointillist (talk) 23:53, 14 November 2009 (UTC)
- Agreed that the level of detail in the cited version -- huge detailed tables, with cycle timings based on some random vendor's implementation -- does not belong in WP. And neither does the trimmed-down version proposed above. Anyone who wants such data will be looking at a processor manual ... and almost certainly NOT a manual from Intel. The main thing anyone needs to know about 8051 assembly is that it's so hugely idiosyncratic that running standard C is not practical. --69.226.238.251 (talk) 00:07, 25 November 2009 (UTC)
- I think you're correct that there is simply too much detail; there are many 8051 clones, and each one has a full description of the instruction set in the datasheet, so we don't need to reproduce that here. But I'd still like to have something that describes the addressing modes and the fact that while a mostly-complete set of arithmetic instructions are available, the conditionals are, as you say, "hugely idiosyncratic." Pfagerburg (talk) 04:55, 25 November 2009 (UTC)
This is in response to the copyright violation report filed at Wikipedia:Copyright problems/2009 November 21. The raw instruction set (as appears in this article) may fall within a gray area of copyright law. Procedures and processes, being simple lists, are generally not copyrighted. However, computer programs can be copyrighted -- and, when read in their entirety, are considered to be the same as original literary works. Given that we list Intel's copyright in this article, it is my opinion that Wikipedia should play it safe here and assume the instruction set is copyrighted and should not be reprinted. Therefore, I am deleting it from the article. Also, the consensus of the above editors suggests the entire instruction set is unnecessary anyway, and the section needs to be rewritten as a discussion. — CactusWriter | needles 16:32, 29 November 2009 (UTC)
- Concur on the narrow ground that the entire instruction set is excessive detail in the article, so it is unnecessary to test the validity of Intel's claim of copyright over the mnemonics. - Pointillist (talk) 20:34, 29 November 2009 (UTC)
please provide some assembly language codings —Preceding unsigned comment added by 124.247.231.133 (talk) 19:29, 14 March 2010 (UTC)
Links to vendors
editI was trying to add in links to vendors who are currently providing enhanced 8051 parts. However, it was been consistently removed. I'm not sure why. Hope there is no problem placing the info here and it won't get removed again. The objective of the info is to allow anyone reading the article to be able to go further to actual devices.
- Atmel 8051 Architecture MCUs
- Cypress PSoC 3, some USB controllers uses enhanced 8051
- Infineon 8-bit MCUs are 8051 compatible
- Maxim 8051 drop-in MCUs
- Nuvoton 8-bit MCUs
- NXP 80C51 MCUs
- RAMTRON MCUs
- Silicon Labs MCUs
- SST FlashFlex MCUs
- Keil maintains a comprehensive device list database (It is mixed with ARM MCUs)
By the way, strangely the link on "Intel bows out, discontinues MCS-51" never get removed as if it is such an important info. —Preceding unsigned comment added 00:07, 31 August 2010 (UTC)
- Links to vendors is spam and will be reverted. So keep away ... --JWBE (talk) 19:40, 4 September 2010 (UTC)
8051 vs MCS-51
editThis article claims that "The Intel MCS-51 ... has today largely been superseded by a vast range of faster and/or functionally enhanced 8051-compatible devices".
That seems ambiguous to me. Is it saying that "8051-compatible devices" are so much better than the original "Intel MCS-51" that they made it obsolete -- i.e., that there is some technical difference between them, but perhaps not a big enough difference to require two separate encyclopedia articles? Or is there is no technical difference between "Intel MCS-51" and "8051-compatible devices" (the phrases are synonyms), and that sentence is merely pointing out that *early* chips in that line have been superseded by *later* chips in that line?
Could someone tweak this article to explicitly say one or the other?:
- The "8051-compatible" microcontrollers, whether from Intel or from some other company, use the Intel MCS-51 instruction set.
- The "8051-compatible" microcontrollers, from Intel and from other companies, are very similar to the original "Intel MCS-51" series, except with these advantages ...
--68.0.124.33 (talk) 17:43, 12 January 2011 (UTC)
Minor edits
editThe Boolean logic engine is not new, it was included in the original chip. NOte that it only operates on select registers and select RAM locations - it sure would be nice if everything was bit addressable... The Rn banks no not change the interrupt latency which is defined as X number of clock before vectoring to the ISR code. Instead, they speed up the ISR by facilitating fast register saving.Armstrong1113149 (talk) 23:02, 25 August 2011 (UTC)
Max CPU Frequency
editIn "Important features and applications" the article states:
- Enhanced 8051 cores are now commonly used which run at six, four, two, or even one clock per machine cycle, and have clock frequencies of up to 100 MHz, and are thus capable of an even greater number of instructions per second
In "Use as intellectual property" the article states:
- In contrast, enhanced 8051 silicon IP cores now run at one clock cycle per machine cycle, and have clock frequencies of up to 450 MHz
Can someone find out how fast these actually run at? --Maslen (talk) 03:55, 7 November 2011 (UTC)
8031/8051: 1-bit architecture?
editThere is a discussion underway at Wikipedia talk:WikiProject Electronics#8031/8051: 1-bit architecture? related to Tagremover's edits on this page, including a strong dispute of his/her interpretation. I would like to keep the discussion in one place rather than fragmenting it over multiple talk pages. --Guy Macon (talk) 14:31, 9 May 2013 (UTC)
Was (is?) this the most popular CPU architecture?
editIf not most popular - now, any idea what would be most popular? My guess ARM is now more/most popular (maybe because not only used for microcontrollers). Note: Any idea how many are still produced or cumulative since it appeared? Note there have been 50 billion ARM processors produced and 10 billion in 2013 so really it's only important to me if you think more of these are/have been made. Would it make (much of a) difference if you would include non-8-bit superset-version (do you usually count them as the same architecture, similar to x86/x86-64?)? For me to guess (if I need to), any idea who produces most of the chips and then who? And the lowest priced versions (if I find dollar amounts..) for me to estimate. 4-bits seem to be (have been?) available down to 5 cents in quantity of 100,000 but still 4-bit sell less then 8-bits (and 8051) it seems. See also: Talk:List_of_common_microcontrollers#Which_microcontroller_.28architecture.29_would_be_most_popular.3F_And_which_dead.3F and in Talk:ARM_architecture comp.arch (talk)
Requested move 23 March 2021
edit- The following is a closed discussion of a requested move. Please do not modify it. Subsequent comments should be made in a new section on the talk page. Editors desiring to contest the closing decision should consider a move review after discussing it on the closer's talk page. No further edits should be made to this discussion.
The result of the move request was: not moved. (non-admin closure) ~ Aseleste (t, e | c, l) 15:04, 30 March 2021 (UTC)
Intel 8051 → 8051 – The name "8051" is usually used without prefixing it with Intel, and as 8051 is already a redirect this could be moved. Although it is orignally designed by Intel, the chip is no longer manufactured by them. WP:COMMONNAME supports using the most common name. PhotographyEdits PhotographyEdits (talk) 14:45, 23 March 2021 (UTC)
- All other processor articles on Wikipedia use '<Manufacturer> <CPU name>'. e.g.: MOS Technology 6502, Motorola 68000, Intel 8086. I think it's good as 'Intel 8051'. -drt1245 (talk) 16:01, 23 March 2021 (UTC)
- Oppose not a primary topic over the number or the (far future) year. User:力 (power~enwiki, π, ν) 17:28, 23 March 2021 (UTC)
- Oppose Except for Turkish, all other languages use either 'Intel 8051' or 'Intel MCS-51'. Drahtlos (talk) 17:49, 23 March 2021 (UTC)
- Oppose: An unnecessary reduction of clarity. — BarrelProof (talk) 18:38, 23 March 2021 (UTC)
- Oppose - Per other respondents. HumanBodyPiloter5 (talk) 21:03, 23 March 2021 (UTC)
- Oppose, and speedy close WP:SNOW In ictu oculi (talk) 22:25, 23 March 2021 (UTC)
- Comment: It seems to be the WP:PRIMARYTOPIC, because 8051 is already a redirect to this page. PhotographyEdits (talk) 11:17, 24 March 2021 (UTC)
- That doesn't mean it should be the title. It is already a WP:PRIMARYREDIRECT, so it is already positioned as the WP:PRIMARYTOPIC for the term. — BarrelProof (talk) 16:10, 24 March 2021 (UTC)
- Oppose no reason given why this should be a special exception over all the other CPUs that use the same naming format.--67.70.100.30 (talk) 15:41, 24 March 2021 (UTC)
- oppose clearly not primary topic—blindlynx (talk) 15:16, 26 March 2021 (UTC)
Microarchitecture edit
editHi, in retrospect I should have come to talk first before making this edit, although I still feel it is justified. After reading the datasheet referenced I couldn't immediately see a way to salvage the given statements. The flags that caught my attention for deletion were, "suggest that it has", "This also might explain", "also seems to indicate", "it may need", "This implies", "it might", "The speed suggests that", "appears to".
I'm aware some of this may in fact be true, but the datasheet does not give enough information to back it up, in addition the phrasing essentially says "I am just guessing." I welcome extra scrutiny of my edit, thanks Strangerpete (talk) 14:05, 8 January 2022 (UTC)
Move to Intel MCS-51?
editCorrect me if i am wrong but this article seams to say that MCS-51 is 'commonly termed 8051' supported by the move in this edit https://en.wikipedia.org/w/index.php?title=Intel_MCS-51&oldid=1013577791 for 'common title'. The intel 8051 is just one of the chips in the MCS-51 family. This article has lots of parts that say 8051 architecture so this page is clearly about the MCS-51 family and is an anomaly Intel MCS-48 is another sires of microcontrollers from intel, and it is uses the family name with the individual chips as sub articles. I suggest that either this article should be moved to Intel MCS-51 or split into two articles, one about the intel 8051 and one about the MCS-51 family. Uneverstop learning (talk) 08:10, 26 August 2023 (UTC)
- Support move to MCS-51. ~Kvng (talk) 14:50, 29 August 2023 (UTC)
- Support MCS-51 is the hole family, Intel 8051 is only the first member. JWBE (talk) 11:03, 21 October 2023 (UTC)
Requested move 20 October 2023
edit- The following is a closed discussion of a requested move. Please do not modify it. Subsequent comments should be made in a new section on the talk page. Editors desiring to contest the closing decision should consider a move review after discussing it on the closer's talk page. No further edits should be made to this discussion.
The result of the move request was: page moved. Move history seemed trivial, so was not restored. Arbitrarily0 (talk) 02:57, 28 October 2023 (UTC)
Intel 8051 → MCS-51 – This article seams to say that MCS-51 is 'commonly termed 8051' supported by the move in this edit https://en.wikipedia.org/w/index.php?title=Intel_MCS-51&oldid=1013577791 for 'common title'. The Intel 8051 is just one of the chips in the MCS-51 family. This article has lots of parts that say 8051 architecture so this page is clearly about the MCS-51 family and is an anomaly Intel MCS-48 is another series of microcontrollers from intel, and it uses the family name with the individual chips as sub articles. I suggest that either this article should be moved to Intel MCS-51 or split into two articles, one about the intel 8051 and one about the MCS-51 family. Uneverstop learning (talk) 22:19, 20 October 2023 (UTC)
- My read is we've already established consensus for the move in the section immediately above so this can now be treated as an uncontroversial move. We still need an admin to do the move since there is non-trivial history to deal with at MCS-51. If my read is correct, I could submit a request at Wikipedia:Requested_moves#Uncontroversial_technical_requests. ~Kvng (talk) 16:56, 24 October 2023 (UTC)