On 24/12/17 02:46,
already...@yahoo.com wrote:
> On Sunday, December 24, 2017 at 2:50:52 AM UTC+2, David Brown wrote:
>> On 23/12/17 23:23,
already...@yahoo.com wrote:
>>> On Saturday, December 23, 2017 at 11:39:40 PM UTC+2, Bruce Hoult
>>> wrote:
>>>> On Sunday, December 24, 2017 at 12:15:15 AM UTC+3,
>>>>
already...@yahoo.com wrote:
>>
>> <snip>
>>
>>>>
>>>>> I also have little doubt that OSR is a bad idea [for hard cores]
>>>>> on the very low end (Cortex-M3/M4 class) where 3 inputs are not a
>>>>> cycle time limiter for a short scalar pipeline.
>>>>
>>>> I note that SiFive's RISC-V Cortex-MS/M4 competitor runs at 320 MHz
>>>> in 180 nm. The fastest ARMs I know of in that process are 180 MHz.
>>>
>>> Did you check Intel PXA250? I am not 100% certain, but it sounds
>>> likely that it was fabricated at 180nm.
>>>
>>> As to Cortex-M3/M4 at 180nm, people don't do it not because it's
>>> impossible (I have no idea if it's possible or not) but because it's
>>> very bad idea. M3/M4 has no instruction cache and the flash at 180nm
>>> is not exactly fast. Flash accelerator helps somewhat, but not enough
>>> for usefull operation above something like 120MHz. And SRAM at 180nm
>>> is relatively expensive, so running all code out of SRAM tend to be
>>> bad economy. One tends to by MCU with as much SRAM as needed for
>>> data, but no more.
>>>
>>> I believe you that there exist 180 MHz parts, but even 180 MHz is
>>> more a gimmick than something really useful. 320 MHz - even more so.
>>
>>
>> There are indeed 180 MHz Cortex-M4 parts, such as the NXP Kinetis K65.
>> It has 8 KB shared instruction/data cache.
>
> If it has cache, it certainly changes the trade-offs.
> Instruction cache even could be not such a bad idea.
> But data cache? I certainly don't want data cache on M4!
> It kills 3/4th of beautiful simplicity of using DMA with peripherals.
I have not used one of these chips, but I have used other
microcontrollers with cache (such as a dual PPC core microcontroller at
about 150-200 MHz, IIRC). There the DMA was synchronised with the cache
through cache snooping, so there was no problem.
You also have control over which areas of memory are cached. Peripheral
regions are not cached, for example. And on devices where DMA does not
synchronise with the cache, you can have an area of ram that is uncached
to make DMA work easier.
Caches make it more complicated to do accurate or predictable timings,
but usually such high-end microcontrollers have good enough peripherals
that you use timers, DMA, and such like to get accurate timings.
> The simplicity that allows even to unexperienced programmers that know nothing about cache coherence to delivery useful results with these little things.
These are more advanced parts than the cheaper M3/M4 devices. You have
to know how to use them - or at the very least, how to work with
existing software for them.
> Then again, my experience with M3/M4 was exclusively with STMicro parts. I can believe that with NXP it never was beautifully simple so a little more pain matters less.
There is little significant difference between the families offered
here, in terms of complexity to use.
> Or, may be, they understood that data cache is a bad idea, but since ARM does not provide caches as part of M4 IP, adding unified cache was much simpler for their designers than adding ICache alone?
Data cache is useful if you have slow ram. On most M3/M4
microcontrollers, you usually use the on-chip ram - and it will be
single cycle. Therefore it does not benefit from cache. Peripherals,
of course, do not benefit from cache. You use data cache on devices
that have external ram - DDR, SDRAM, etc. Most M3/M4 microcontrollers
don't have data cache simply because it is of no use - not because some
manufacturers "understand" caches and some do not!
>
> Anyway, there is no chance that I will use M4 with D$ in those designs where I have control.
>
That's your choice. But I think you are misunderstanding the purpose of
these caches, and how they work.
>
>
>
>> That is the fastest M4 that
>> I know of. Until recently, the fastest M7 I had heard of was 240 MHz.
>> But there are new M7 devices coming out at 600 MHz. I don't know the
>> process size, but I think it is small - a key difference here is that
>> these microcontrollers do not have any on-board flash. As I understand
>> it, the speed limitation of M3/M4/M7 microcontrollers has not been the
>> core itself, but using a process that is also cheap for flash. Once the
>> decision was made to drop the flash (in the NXP i.MX RT series, for
>> example), a smaller and faster process could be used.
>>
>>
>>
>>>
>>> As to SiFive being "Cortex-MS/M4 competitor" if they said it by
>>> themselves then to me it sounds as megalomania.
>>>
>>
>> I suspect whoever said it meant competitive in terms of processor power
>> for a given area, cost, or power usage - rather than competing on
>> numbers of chips produced!
>>
>>>>
>>>> Whether something is a cycle time limiter depends on what else is
>>>> limiting the cycle time instead :-) :-)
>>>
>