Re: [OPAE] Main Memory Access from FPGA

David Nicuesa <david.nicuesa.aranda at gmail.com> Thu, 07 Feb 2019 17:22:50 +0100
Newsgroups dev.linux.lists.opae
Message-ID <CAAnQZJAaDPn+EY=-eTvTqnUpUSYP6iTDpsSanapeL4F55QJFzg@mail.gmail.com>
--===============8951592328391385024==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

Hello Michael,

thanks for the quick response.

So, correct me if I'm wrong, MMIO goes into the c2 on RTL, and Reads/Writes
are managed through c0 and c1, right?
This way I can allocate a buffer through software using  fpgaPrepareBuffer =
and
access that buffer from software as a regular array, and using c0/c1 the
AFU is able to work with it and those will be actual main memory accesses,
not PCIe transactions.

Thank you very much for the help.

Regards,
David

El jue., 7 feb. 2019 a las 16:41, Adler, Michael (<michael.adler(a)intel.co=
m>)
escribi=C3=B3:

> The CCI-P interface differentiates between MMIO (memory mapped I/O) and
> main memory read/write requests. MMIO is an FPGA-side address space, main=
ly
> used for implementing FPGA-side CSRs. Those CSRs are exposed in the
> software=E2=80=99s address space but actually result in PCIe transactions=
 to the
> FPGA.
>
>
>
> CCI-P=E2=80=99s main memory read/write requests are exactly what you are =
asking
> for: DMA to host main memory. The primary address space used for those
> requests is a =E2=80=9Cphysical=E2=80=9D I/O address space that maps to h=
ost physical
> addresses. It is also possible to use virtual addresses on the FPGA that
> correspond to the software=E2=80=99s virtual address space. For that you =
can use
> the MPF VTP extension. See section 3 of the tutorial
> <https://github.com/OPAE/intel-fpga-bbb/tree/master/samples/tutorial/03_c=
cip>
> .
>
>
>
> -Michael
>
>
>
> *From: *OPAE <opae-bounces(a)lists.01.org> on behalf of David Nicuesa <
> david.nicuesa.aranda(a)gmail.com>
> *Date: *Thursday, February 7, 2019 at 9:53 AM
> *To: *"opae(a)lists.01.org" <opae(a)lists.01.org>
> *Subject: *[OPAE] Main Memory Access from FPGA
>
>
>
> Hi all,
>
>
>
> I'm getting started with the examples, specifically with the hello_world
> from the intel-fpga-bbb
> <https://github.com/OPAE/intel-fpga-bbb/tree/master/samples/tutorial/01_h=
ello_world> repository.
> Everything works just fine but I was wondering if it is possible for me to
> access the Main Memory (Not IO) from the FPGA using the CCI protocol.
>
>
>
> I have an rtl to sum two vectors, so my idea was to provide the addresses
> for those two vectors from the software application, allocated in General
> Purpose Memory. This way, ideally, the FPGA should be able to access those
> vectors without having a shared buffer (MMIO).
>
>
>
> Is it possible to do this, maybe using some MPF extension? In case this is
> not feasible, I should allocate a shared buffer in MMIO space and then
> comunicate the vectors through that buffer, right?
>
>
>
> Thanks!
>

--===============8951592328391385024==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"

PGRpdiBkaXI9Imx0ciI+SGVsbG8gTWljaGFlbCw8ZGl2Pjxicj48L2Rpdj48ZGl2PnRoYW5rcyBm
b3IgdGhlIHF1aWNrIHJlc3BvbnNlLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+U28sIGNvcnJl
Y3QgbWUgaWYgSSYjMzk7bSB3cm9uZywgTU1JTyBnb2VzIGludG8gdGhlIGMyIG9uIFJUTCwgYW5k
IFJlYWRzL1dyaXRlcyBhcmUgbWFuYWdlZCB0aHJvdWdoIGMwIGFuZCBjMSwgcmlnaHQ/wqA8L2Rp
dj48ZGl2PlRoaXMgd2F5IEkgY2FuIGFsbG9jYXRlIGEgYnVmZmVyIHRocm91Z2ggc29mdHdhcmUg
dXNpbmfCoDxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoNDEsMTI4LDE4NSk7Zm9udC1mYW1pbHk6TGF0
byxwcm94aW1hLW5vdmEsJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssQXJpYWwsc2Fucy1zZXJp
Zjtmb250LXNpemU6MTQuNHB4O2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kLWNvbG9yOnJnYigy
MzEsMjQyLDI1MCkiPsKgPC9zcGFuPjxjb2RlIGNsYXNzPSJnbWFpbC1kZXNjbmFtZSIgc3R5bGU9
ImJveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LWZhbWlseTpDb25zb2xhcywmcXVvdDtBbmRhbGUg
TW9ubyBXVCZxdW90OywmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywmcXVvdDtMdWNpZGEgQ29uc29s
ZSZxdW90OywmcXVvdDtMdWNpZGEgU2FucyBUeXBld3JpdGVyJnF1b3Q7LCZxdW90O0RlamFWdSBT
YW5zIE1vbm8mcXVvdDssJnF1b3Q7Qml0c3RyZWFtIFZlcmEgU2FucyBNb25vJnF1b3Q7LCZxdW90
O0xpYmVyYXRpb24gTW9ubyZxdW90OywmcXVvdDtOaW1idXMgTW9ubyBMJnF1b3Q7LE1vbmFjbywm
cXVvdDtDb3VyaWVyIE5ldyZxdW90OyxDb3VyaWVyLG1vbm9zcGFjZTtmb250LXNpemU6MTQuNHB4
O3doaXRlLXNwYWNlOm5vd3JhcDttYXgtd2lkdGg6MTAwJTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50
O2JvcmRlcjpub25lO3BhZGRpbmc6MHB4O2NvbG9yOnJnYigwLDAsMCk7b3ZlcmZsb3cteDphdXRv
O2ZvbnQtd2VpZ2h0OjcwMCI+ZnBnYVByZXBhcmVCdWZmZXI8L2NvZGU+wqBhbmQgYWNjZXNzIHRo
YXQgYnVmZmVyIGZyb20gc29mdHdhcmUgYXMgYSByZWd1bGFyIGFycmF5LCBhbmQgdXNpbmcgYzAv
YzEgdGhlIEFGVSBpcyBhYmxlIHRvIHdvcmsgd2l0aCBpdCBhbmQgdGhvc2Ugd2lsbCBiZSBhY3R1
YWwgbWFpbiBtZW1vcnkgYWNjZXNzZXMsIG5vdCBQQ0llIHRyYW5zYWN0aW9ucy48L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2PlRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHRoZSBoZWxwLjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+UmVnYXJkcyw8L2Rpdj48ZGl2PkRhdmlkPC9kaXY+PC9kaXY+PGJy
PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0
ciI+RWwganVlLiwgNyBmZWIuIDIwMTkgYSBsYXMgMTY6NDEsIEFkbGVyLCBNaWNoYWVsICgmbHQ7
PGEgaHJlZj0ibWFpbHRvOm1pY2hhZWwuYWRsZXJAaW50ZWwuY29tIj5taWNoYWVsLmFkbGVyQGlu
dGVsLmNvbTwvYT4mZ3Q7KSBlc2NyaWJpw7M6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJn
bWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDox
cHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij4KCgoKCgo8ZGl2IGxh
bmc9IkVOLVVTIj4KPGRpdiBjbGFzcz0iZ21haWwtbV8tMjc1NDc3MDcxNTYxMjAzODE1V29yZFNl
Y3Rpb24xIj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Okdl
b3JnaWEsc2VyaWYiPlRoZSBDQ0ktUCBpbnRlcmZhY2UgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBN
TUlPIChtZW1vcnkgbWFwcGVkIEkvTykgYW5kIG1haW4gbWVtb3J5IHJlYWQvd3JpdGUgcmVxdWVz
dHMuIE1NSU8gaXMgYW4gRlBHQS1zaWRlIGFkZHJlc3Mgc3BhY2UsIG1haW5seSB1c2VkIGZvciBp
bXBsZW1lbnRpbmcgRlBHQS1zaWRlIENTUnMuIFRob3NlIENTUnMKIGFyZSBleHBvc2VkIGluIHRo
ZSBzb2Z0d2FyZeKAmXMgYWRkcmVzcyBzcGFjZSBidXQgYWN0dWFsbHkgcmVzdWx0IGluIFBDSWUg
dHJhbnNhY3Rpb25zIHRvIHRoZSBGUEdBLjx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD4KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWYiPjx1
PjwvdT7CoDx1PjwvdT48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls
ZT0iZm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZiI+Q0NJLVDigJlzIG1haW4gbWVtb3J5IHJlYWQv
d3JpdGUgcmVxdWVzdHMgYXJlIGV4YWN0bHkgd2hhdCB5b3UgYXJlIGFza2luZyBmb3I6IERNQSB0
byBob3N0IG1haW4gbWVtb3J5LiBUaGUgcHJpbWFyeSBhZGRyZXNzIHNwYWNlIHVzZWQgZm9yIHRo
b3NlIHJlcXVlc3RzIGlzIGEg4oCccGh5c2ljYWzigJ0gSS9PIGFkZHJlc3Mgc3BhY2UgdGhhdCBt
YXBzCiB0byBob3N0IHBoeXNpY2FsIGFkZHJlc3Nlcy4gSXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1
c2UgdmlydHVhbCBhZGRyZXNzZXMgb24gdGhlIEZQR0EgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSBz
b2Z0d2FyZeKAmXMgdmlydHVhbCBhZGRyZXNzIHNwYWNlLiBGb3IgdGhhdCB5b3UgY2FuIHVzZSB0
aGUgTVBGIFZUUCBleHRlbnNpb24uIFNlZQo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vT1BB
RS9pbnRlbC1mcGdhLWJiYi90cmVlL21hc3Rlci9zYW1wbGVzL3R1dG9yaWFsLzAzX2NjaXAiIHRh
cmdldD0iX2JsYW5rIj4Kc2VjdGlvbiAzIG9mIHRoZSB0dXRvcmlhbDwvYT4uPHU+PC91Pjx1Pjwv
dT48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6R2VvcmdpYSxzZXJpZiI+PHU+PC91PsKgPHU+PC91Pjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJN
c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmIj4tTWljaGFl
bDx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWYiPjx1PjwvdT7CoDx1PjwvdT48L3NwYW4+PC9w
Pgo8ZGl2IHN0eWxlPSJib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVy
LWxlZnQ6bm9uZTtib3JkZXItdG9wOjFwdCBzb2xpZCByZ2IoMTgxLDE5NiwyMjMpO3BhZGRpbmc6
M3B0IDBpbiAwaW4iPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1z
aXplOjEycHQ7Y29sb3I6YmxhY2siPkZyb206IDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQt
c2l6ZToxMnB0O2NvbG9yOmJsYWNrIj5PUEFFICZsdDs8YSBocmVmPSJtYWlsdG86b3BhZS1ib3Vu
Y2VzQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPm9wYWUtYm91bmNlc0BsaXN0cy4wMS5v
cmc8L2E+Jmd0OyBvbiBiZWhhbGYgb2YgRGF2aWQgTmljdWVzYSAmbHQ7PGEgaHJlZj0ibWFpbHRv
OmRhdmlkLm5pY3Vlc2EuYXJhbmRhQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmRhdmlkLm5p
Y3Vlc2EuYXJhbmRhQGdtYWlsLmNvbTwvYT4mZ3Q7PGJyPgo8Yj5EYXRlOiA8L2I+VGh1cnNkYXks
IEZlYnJ1YXJ5IDcsIDIwMTkgYXQgOTo1MyBBTTxicj4KPGI+VG86IDwvYj4mcXVvdDs8YSBocmVm
PSJtYWlsdG86b3BhZUBsaXN0cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5vcGFlQGxpc3RzLjAx
Lm9yZzwvYT4mcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzpvcGFlQGxpc3RzLjAxLm9yZyIgdGFy
Z2V0PSJfYmxhbmsiPm9wYWVAbGlzdHMuMDEub3JnPC9hPiZndDs8YnI+CjxiPlN1YmplY3Q6IDwv
Yj5bT1BBRV0gTWFpbiBNZW1vcnkgQWNjZXNzIGZyb20gRlBHQTx1PjwvdT48dT48L3U+PC9zcGFu
PjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48
L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj5IaSBhbGwsIDx1PjwvdT48dT48
L3U+PC9wPgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPgo8
L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SSYjMzk7bSBnZXR0aW5nIHN0YXJ0ZWQg
d2l0aCB0aGUgZXhhbXBsZXMsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBoZWxsb193b3JsZCBmcm9t
IHRoZcKgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL09QQUUvaW50ZWwtZnBnYS1iYmIvdHJl
ZS9tYXN0ZXIvc2FtcGxlcy90dXRvcmlhbC8wMV9oZWxsb193b3JsZCIgdGFyZ2V0PSJfYmxhbmsi
PmludGVsLWZwZ2EtYmJiPC9hPsKgcmVwb3NpdG9yeS4gRXZlcnl0aGluZyB3b3JrcyBqdXN0IGZp
bmUgYnV0CiBJIHdhcyB3b25kZXJpbmcgaWYgaXQgaXMgcG9zc2libGUgZm9yIG1lIHRvIGFjY2Vz
cyB0aGUgTWFpbiBNZW1vcnkgKE5vdCBJTykgZnJvbSB0aGUgRlBHQSB1c2luZyB0aGUgQ0NJIHBy
b3RvY29sLsKgPHU+PC91Pjx1PjwvdT48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9y
bWFsIj48dT48L3U+wqA8dT48L3U+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+SSBoYXZlIGFuIHJ0bCB0byBzdW0gdHdvIHZlY3RvcnMsIHNvIG15IGlkZWEgd2FzIHRvIHBy
b3ZpZGUgdGhlIGFkZHJlc3NlcyBmb3IgdGhvc2UgdHdvIHZlY3RvcnMgZnJvbSB0aGUgc29mdHdh
cmUgYXBwbGljYXRpb24sIGFsbG9jYXRlZCBpbiBHZW5lcmFsIFB1cnBvc2UgTWVtb3J5LiBUaGlz
IHdheSwgaWRlYWxseSwgdGhlIEZQR0Egc2hvdWxkIGJlIGFibGUgdG8gYWNjZXNzIHRob3NlIHZl
Y3RvcnMgd2l0aG91dAogaGF2aW5nIGEgc2hhcmVkIGJ1ZmZlciAoTU1JTykuPHU+PC91Pjx1Pjwv
dT48L3A+CjwvZGl2Pgo8ZGl2Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+
PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+SXMgaXQgcG9zc2libGUgdG8g
ZG8gdGhpcywgbWF5YmUgdXNpbmcgc29tZSBNUEYgZXh0ZW5zaW9uPyBJbiBjYXNlIHRoaXMgaXMg
bm90IGZlYXNpYmxlLCBJIHNob3VsZCBhbGxvY2F0ZSBhIHNoYXJlZCBidWZmZXIgaW4gTU1JTyBz
cGFjZSBhbmQgdGhlbiBjb211bmljYXRlIHRoZSB2ZWN0b3JzIHRocm91Z2ggdGhhdCBidWZmZXIs
IHJpZ2h0Pzx1PjwvdT48dT48L3U+PC9wPgo8L2Rpdj4KPGRpdj4KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+PHU+PC91PsKgPHU+PC91PjwvcD4KPC9kaXY+CjxkaXY+CjxwIGNsYXNzPSJNc29Ob3JtYWwi
PlRoYW5rcyE8dT48L3U+PHU+PC91PjwvcD4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cgo8
L2Jsb2NrcXVvdGU+PC9kaXY+Cg==

--===============8951592328391385024==--