09-14-2018 08:28 AM - edited 09-14-2018 08:29 AM
Experimented with XC7Z007S, I was pretty surprised to find several indications that it's a dual-core device, contrary to what the documentation says.
Among others, it reports itself as having two CPUs in the SCU_CONFIGURATION_REGISTER register.
But more interesting are some tests I've made running two CPU-intensive processes in parallel. They show the same behavior on Z007S as with a Z010: Neither showed indications of sharing one processor for running these two processes.
On both devices, adding "nosmp" to the Linux kernel command line slowed down the execution of these two processes in parallel by a factor of two. So "nosmp" forced both processes to take turns on the single processor available, slowing things down. I expected this to make a difference on Z010 which is known to be dual core. But it shouldn't make any difference on a single core device, Z007. And it did.
For more details on exactly how I reached the findings above, please take a look on my rather lengthy blog post: http://billauer.co.il/blog/2018/09/xilinx-zynq-smp-or-single-core/
Does anyone have insights on this matter?
Thanks in advance,
09-14-2018 06:59 PM
The S device is tested for one processor. The second processor is disabled by an efuse blown during test. I suspect if there are orders for S devices and S tested parts are unavailable, the order could be filled with a non S part. So, you might be lucky with a fully functional non S part.
All manufacturers reserve the right to ship you more, tif they wish. But, you can only depend on what is guaranteed.
09-14-2018 10:09 PM
Thanks for your answer. It's a baffling one.
Physically printed on the chip I work with, it clearly says XC7Z007S, with emphasis on the "S". You seem to imply that some of these chips leave the factory with the second processor enabled. I didn't really follow the logic of why the second processor wouldn't be disabled (how can a device not be S-tested but tested for two processors?).
Besides, I'm under the impression the Linux automatically detects the number of processors from an ARM hardware register. So what about someone who isn't aware of this lottery of single/dual core, and designs his system on a dual core device, relying on the experienced processing power? Sooner or later, a single-core batch arrives to the production floor, and suddenly the end products don't work. Doesn't sound like something a serious silicon vendor would do to its customers.
Is there any reference to this single/dual core lottery in Xilinx' publications?
09-15-2018 06:47 AM
Contact your local distributor to get the facts. All the tricks of the trade I never learned in my 20 years at the big X, but I heard some of the details as I previously mentioned.
Often when a new device is first announced, orders get filled for it by devices under a better test program, yet marked as the new part. Note there is a record kept of the device DNA id code as to how the part is marked. At any time, that code ties back to the history of exactly where that part came from, how tested, how marked.
You have a valid point: this could be a problem if the application requires ONLY one core, although, configuring Linux properly is your job, not Xilinx.
09-16-2018 11:20 PM
I'm not sure if the distributor is the right address for this issue. Local support is there to get the project working, and it already is: Linux happily detects the two cores and all is fine. And even if I insisted on a single core, I've already suggested the solution, which is the "nosmp" kernel command.
So I could have taken the "it works, what the heck" approach and leave this issue alone, but experience has taught me otherwise. Besides, I believe more people would benefit from knowing if Z007S comes with a single core ARM as specified, or with a dual core ARM guaranteed for all devices out there. Or if it depends on the production batch.
Is there any authoritative information on this?
09-17-2018 06:44 AM
Your local Xilinx distributor IS your resource,
That is the official support policy (when I left, and it doesn't appear anything has changed).
The days of 'call us' are over. No one offers support like that. The new model is forums (customers answer their own questions with a little help from company experts), followed by distributor support (if you are lucky enough to have a local distributor which is always the case for Xilinx devices.
As a Xilinx employee, I would sometimes go find an official answer and post it here, but I was never encouraged, nor 'paid' for that work. I did it because I believed it was the best way to keep support a notch above the competition. So, you can hope someone like me is left, but don't count on it. I was continually trying to improve support in the tradition of Peter Alfke (for those unfamiliar with Peter, Google his name).
It is my firm belief that you ignore your customers at your peril (it is the beginning of the end). As everything is now ruled by business fashion, I have little hope.
09-17-2018 11:18 PM
We seem to differ on how to best address Xilinx' support on this matter. This way or another, my question is already here, so it might as well be answered here. It's a rather simple one, and requires no back-and-forth of exchanging information on my specific situation.
I have a XC7Z007S, listed as a single core device in Xilinx' specs, saying it has two CPUs in its SCU_CONFIGURATION_REGISTER. There should be a simple and logic explanation to that, or a simple dismissal of my claim by showing my mistake. And there's also the performance test results to explain.